锘??xml version="1.0" encoding="utf-8" standalone="yes"?> pair鏄皢2涓暟鎹粍鍚堟垚涓涓暟鎹紝褰撻渶瑕佽繖鏍風(fēng)殑闇姹傛椂灝卞彲浠ヤ嬌鐢╬air錛屽stl涓殑map灝辨槸灝唊ey鍜寁alue鏀懼湪涓璧鋒潵淇濆瓨銆傚彟涓涓簲鐢ㄦ槸錛屽綋涓涓嚱鏁伴渶瑕佽繑鍥?涓暟鎹殑鏃跺欙紝鍙互閫夋嫨pair銆?pair鐨勫疄鐜版槸涓涓粨鏋勪綋錛屼富瑕佺殑涓や釜鎴愬憳鍙橀噺鏄痜irst second 鍥犱負(fù)鏄嬌鐢╯truct涓嶆槸class錛屾墍浠ュ彲浠ョ洿鎺ヤ嬌鐢╬air鐨勬垚鍛樺彉閲忋?/p>
2 make_pair鍑芥暟 template 寰堟槑鏄撅紝鎴戜滑鍙互浣跨敤pair鐨勬瀯閫犲嚱鏁頒篃鍙互浣跨敤make_pair鏉ョ敓鎴愭垜浠渶瑕佺殑pair銆?涓鑸琺ake_pair閮戒嬌鐢ㄥ湪闇瑕乸air鍋氬弬鏁扮殑浣嶇疆錛屽彲浠ョ洿鎺ヨ皟鐢╩ake_pair鐢熸垚pair瀵硅薄寰堟柟渚匡紝浠g爜涔熷緢娓呮櫚銆?鍙︿竴涓嬌鐢ㄧ殑鏂歸潰灝辨槸pair鍙互鎺ュ彈闅愬紡鐨勭被鍨嬭漿鎹紝榪欐牱鍙互鑾峰緱鏇撮珮鐨勭伒媧誨害銆傜伒媧誨害涔熷甫鏉ヤ簡涓浜涢棶棰樺錛?/p>
std::pair<int, float>(1, 1.1); std::make_pair(1, 1.1); 鏄笉鍚岀殑錛岀涓涓氨鏄痜loat錛岃岀2涓細(xì)鑷繁鍖歸厤鎴恉ouble銆?br> The existence of virtual function(s) Existence of virtual function(s) will add 4 bytes of virtual table pointer in the class, which will be added to size of class. Again, in this case, if the base class of the class already has virtual function(s) either directly or through its base class, then this additional virtual function won't add anything to the size of the class. Virtual table pointer will be common across the class hierarchy. That is class Base { public: ... virtual void SomeFunction(...); private: int iAMem }; class Derived : public Base { ... virtual void SomeOtherFunction(...); private: int iBMem }; In the example above, sizeof(Base) will be 8 bytes--that is sizeof(int iAMem) + sizeof(vptr). sizeof(Derived) will be 12 bytes, that is sizeof(int iBMem) + sizeof(Derived). Notice that the existence of virtual functions in class Derived won't add anything more. Now Derived will set the vptr to its own virtual function table. 鍦板潃 +0 +1 +2 +3 榪欓噷 闆舵槸涓涓壒瀹氬鹼紝騫傛槸0 灝炬暟涔熸槸0銆?/p>
嫻偣鏁?12.5浣滀負(fù)涓涓崄鍏繘鍒舵暟0xC1480000淇濆瓨鍦ㄥ瓨鍌ㄥ尯涓紝榪欎釜鍊煎涓嬶細(xì) 嫻偣鏁板拰鍗佸叚榪涘埗絳夋晥淇濆瓨鍊間箣闂寸殑杞崲鐩稿綋綆鍗曘備笅闈㈢殑渚嬪瓙璇存槑涓婇潰鐨勫?12.5濡備綍杞?br>鎹€?br>嫻偣淇濆瓨鍊間笉鏄竴涓洿鎺ョ殑鏍煎紡錛岃杞崲涓轟竴涓誕鐐規(guī)暟錛屼綅蹇呴』鎸変笂闈㈢殑嫻偣鏁頒繚瀛樻牸寮忚〃 鍦板潃 +0 +1 +2 +3 浠庤繖涓緥瀛愬彲浠ュ緱鍒頒笅闈㈢殑淇℃伅錛?br> 絎﹀彿浣嶆槸1 琛ㄧず涓涓礋鏁?br> 騫傛槸浜岃繘鍒?0000010鎴栧崄榪涘埗130錛?30鍑忓幓127鏄?錛屽氨鏄疄闄呯殑騫傘?br> 灝炬暟鏄悗闈㈢殑浜岃繘鍒舵暟10010000000000000000000 鎺ョ潃,鏍規(guī)嵁鎸囨暟璋冩暣灝炬暟.涓涓礋鐨勬寚鏁板悜宸︾Щ鍔ㄥ皬鏁扮偣.涓涓鐨勬寚鏁板悜鍙崇Щ鍔ㄥ皬鏁扮偣.鍥犱負(fù) 緇撴灉鏄竴涓簩榪涘埗嫻偣鏁幫紝灝忔暟鐐瑰乏杈圭殑浜岃繘鍒舵暟浠h〃鎵澶勪綅緗殑2鐨勫箓錛屼緥濡傦細(xì)1100琛ㄧず int data = 0xf4f3f2f1; 鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/edivista/archive/2009/06/07/4248794.aspx 鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?/strong>http://blog.csdn.net/edivista/archive/2009/06/07/4248794.aspx
鏈榪戝彂鐜版噿鎯扮湡鐨勬槸涓涓緢瀹規(guī)槗鍏繪垚鐨勪範(fàn)鎯紝瀹冧細(xì)鎱㈡參鍚炲櫖鎺変竴鍒囥傚氨欏圭洰鑰岃█錛屽帇鍔涚殑紜瘮瀛︾敓鏃惰綣侀噸璁稿錛屼絾鏉$悊鎬т技涔庢洿鍔犻噸瑕併傞殢鎵嬭涓嬶紝闅忔椂鎬葷粨鎬誨綊鏄ソ鐨勶紝涓涓洖澶達(dá)紝灝變笉鐭ラ亾浠涔堟槸鏃跺欐槸涓ご浜嗐?br>
鎵浠ュ崐騫村鐨勭粡楠屾潵鐪嬶紝涓瀹氳鍙?qiáng)鏃剁殑鎬葷粨欏圭洰錛岃鎶婃渶鏂伴矞鐨勶紝鏈鐑皵鑵捐吘鐨勪笢瑗胯褰曚笅鏉ャ?br>瀵硅嚜宸卞洖欏炬槸涓涓府鍔╋紝瀵逛粬浜哄叆闂ㄤ篃鏄釜鎹峰緞銆?br>
鍏繪垚鍙?qiáng)鏃舵葷粨鐨勪範(fàn)鎯緢閲嶈銆?/p>
]]>
棣栧厛鎰熻阿榛橀粯鏀寔鎴戠殑浜猴紝鍦ㄨ繖涓璺鎵劇殑璺笂錛屾湁榪囧緢澶氭尗鎶橈紝璋㈣阿浠栦滑緇欐垜鐨勫姏閲忥紝璁╂垜瓚婃尗瓚婂媷銆?
鍏舵鎰熻阿涓嬈℃闈㈣瘯涓粰浜嗘垜寰堝甯姪鐨勯潰璇曞畼錛屽叾瀹為潰璇曟槸涓涓簰鐩稿涔?fàn)鐨勬溵Z細(xì)錛岃屼笖姣忎竴嬈$殑鑲畾閮芥槸瀵硅兘鍔涚殑涓縐嶈偗瀹氾紝緇欎簡鎴戝緢澶氫俊蹇冦傛渶鍚庡彲鑳界敱浜庡悇縐嶅師鍥狅紝涓庝竴浜涘叕鍙告摝鑲╄岃繃錛屼篃琛峰績紲濇効榪欎簺鍏徃鐨勫彂灞曡秺鏉ヨ秺濂姐?
鏈鍚庢劅璋㈢粰浜嗘垜寰堝寤鴻鐨勪漢錛岃鎴戜竴璺潥鎸佹ⅵ鎯崇殑璧頒笅鏉ャ?杞歡寮鍙戯紝鏄垜鐑埍鐨勪竴涓柟鍚戯紝鎴戜篃甯屾湜鑳藉娌跨潃榪欐潯璺戶緇蛋涓嬪幓銆?
灝忓皬騫垮憡錛屽鏋滀綘鐨勭綉緇滃緢鎱紝涓嶅Θ璇曡瘯Opera鐨凾urbo鍔犻燂紝涓嶄竴鑸殑浣撻獙鍟婏紒
]]>
綰跨▼瀹夊叏鐨?Thread-Safe)錛氬鏋滀竴涓嚱鏁板湪鍚屼竴鏃跺埢鍙互琚涓嚎紼嬪畨鍏ㄥ湴璋冪敤錛屽氨縐拌鍑芥暟鏄嚎紼嬪畨鍏ㄧ殑銆傜嚎紼嬪畨鍏ㄥ嚱鏁拌В鍐沖涓嚎紼嬭皟鐢ㄥ嚱鏁版椂璁塊棶鍏變韓璧勬簮鐨勫啿紿侀棶棰樸?br>
鍙噸鍏?Reentrant)錛氬嚱鏁板彲浠ョ敱澶氫簬涓涓嚎紼嬪茍鍙戜嬌鐢紝鑰屼笉蹇呮媴蹇冩暟鎹敊璇傚彲閲嶅叆鍑芥暟鍙互鍦ㄤ換鎰忔椂鍒昏涓柇錛岀◢鍚庡啀緇х畫榪愯錛屼笉浼?xì)涓㈠け鏁版嵁銆傚彲閲嶅叆鎬цВ鍐沖嚱鏁拌繍琛岀粨鏋滅殑紜畾鎬у拰鍙噸澶嶆с傚彲閲嶅叆鍑芥暟緙栧啓瑙勮寖涓猴細(xì)
1銆佷笉鍦ㄥ嚱鏁板唴閮ㄤ嬌鐢ㄩ潤鎬佹垨鍏ㄥ眬鏁版嵁
2銆佷笉榪斿洖闈欐佹垨鍏ㄥ眬鏁版嵁錛屾墍鏈夋暟鎹兘鐢卞嚱鏁扮殑璋冪敤鑰呮彁渚涖?
3銆佷嬌鐢ㄦ湰鍦版暟鎹紝鎴栬呴氳繃鍒朵綔鍏ㄥ眬鏁版嵁鐨勬湰鍦版嫹璐濇潵淇濇姢鍏ㄥ眬鏁版嵁銆?br>4銆佸鏋滃繀欏昏闂叏灞鍙橀噺錛屽埄鐢ㄤ簰鏂ユ満鍒舵潵淇濇姢鍏ㄥ眬鍙橀噺銆?br>5銆佷笉璋冪敤涓嶅彲閲嶅叆鍑芥暟銆?br>
涓よ呬箣闂寸殑鍏崇郴錛?br>1銆佷竴涓嚱鏁板浜庡涓嚎紼嬫槸鍙噸鍏ョ殑錛屽垯榪欎釜鍑芥暟鏄嚎紼嬪畨鍏ㄧ殑銆?br>2銆佷竴涓嚱鏁版槸綰跨▼瀹夊叏鐨勶紝浣嗗茍涓嶄竴瀹氭槸鍙噸鍏ョ殑銆?br>3銆佸彲閲嶅叆鎬ц寮轟簬綰跨▼瀹夊叏鎬с?br>
姣斿錛歴trtok鍑芥暟鏄棦涓嶅彲閲嶅叆鐨勶紝涔熶笉鏄嚎紼嬪畨鍏ㄧ殑銆傚姞閿佺殑strtok涓嶆槸鍙噸鍏ョ殑錛屼絾綰跨▼瀹夊叏銆傝宻trtok_r鏃㈡槸鍙噸鍏ョ殑錛屼篃鏄嚎紼嬪畨鍏ㄧ殑
涔嬫墍浠ヤ細(xì)鍘繪煡榪欎釜闂錛屾槸鍦ㄨ冭瘯涓亣鍒拌繃鑰僺trtok榪欎釜闂鏄惁鍙敤浜庡綰跨▼銆傝嚜宸變粠浣跨敤鐨勮搴︿笂鎰熻涓嶅畨鍏紝浣嗘槸絀跺叾鍘熷洜鍗翠笉鏄緢鏄庣櫧銆傛煡浜嗕竴涓嬶紝灞呯劧娑夊強(qiáng)鍒板嚱鏁扮殑綰跨▼瀹夊叏銆?br>
鍦ㄥ彟涓綃囧崥鏂囦腑錛屾槸榪欐牱瑙i噴鐨勶細(xì)
strtok涓嶆槸涓涓嚎紼嬪畨鍏ㄧ殑鍑芥暟銆傚洜涓烘牴鎹叾瀹氫箟錛屽畠蹇呴』浣跨敤鍐呴儴闈欐佸彉閲忔潵璁板綍瀛楃涓蹭腑涓嬩竴涓渶瑕佽В鏋愮殑鏍囪鐨勫綋鍓嶄綅緗備絾鏄紝鐢變簬鎸囩ず榪欎釜浣嶇疆鐨勫彉閲忓彧鏈変竴涓紝閭d箞錛屽湪鍚屼竴涓▼搴忎腑鍑虹幇澶氫釜瑙f瀽涓嶅悓瀛楃涓茬殑strtok璋冪敤鏃訛紝鍚勮嚜鐨勫瓧絎︿覆鐨勮В鏋愬氨浼?xì)浜掔浉骞叉壈銆傦紙鎽樿嚜錛?http://hi.baidu.com/pigfanfan/blog/item/72816c958d63e743d1135ebf.html錛?br>
鎬庝箞閬垮厤鍛紵
鎴戜滑鍙互鍒╃敤鍙︿竴涓嚱鏁幫細(xì)strtok_r錛岃繖涓槸涓涓嚎紼嬪畨鍏ㄧ殑鍑芥暟鈥斺攕trtok_r錛屼互姝ゆ潵浠f浛strtok銆?br>
]]>
1 pair鐨勫簲鐢?
浠ヤ笂鏄粠緗戜笂鎵炬潵鐨勮祫鏂欙紝鎴戝張鏌ヤ簡涓涓嬪叧浜巔air鐨勫畾涔夛紝鍏跺畾涔夋槸涓涓ā鏉跨粨鏋勩?br>
// TEMPLATE STRUCT pair
template<class _Ty1,
class _Ty2> struct pair
{ // store a pair of values
typedef pair<_Ty1, _Ty2> _Myt;
typedef _Ty1 first_type;
typedef _Ty2 second_type;
pair()
: first(_Ty1()), second(_Ty2())
{ // construct from defaults
}
pair(const _Ty1& _Val1, const _Ty2& _Val2)
: first(_Val1), second(_Val2)
{ // construct from specified values
}
template<class _Other1,
class _Other2>
pair(const pair<_Other1, _Other2>& _Right)
: first(_Right.first), second(_Right.second)
{ // construct from compatible pair
}
void swap(_Myt& _Right)
{ // exchange contents with _Right
std::swap(first, _Right.first);
std::swap(second, _Right.second);
}
_Ty1 first; // the first stored value
_Ty2 second; // the second stored value
};
make_pair鍚屾牱涔熸槸涓涓ā鏉垮嚱鏁般傚叾瀹氫箟濡備笅錛?br>
template<class _Ty1,
class _Ty2> inline
pair<_Ty1, _Ty2> make_pair(_Ty1 _Val1, _Ty2 _Val2)
{ // return pair composed from arguments
return (pair<_Ty1, _Ty2>(_Val1, _Val2));
}
]]>
{
char k[3];
public:
virtual void aa();
};
class B: public virtual A
{
char j[3];
public:
virtual void bb();
};
class C: public virtual B
{
char i[3];
public:
virtual void cc();
};
璇烽棶sizeof(A), sizeof(B), sizeof(C)鍒嗗埆涓哄灝戯紵
瀵逛簬A錛?鎴戜滑寰堟竻妤氱殑鐭ラ亾錛屽叾澶у皬涓?銆?br>瀵逛簬B錛岃冭檻鍒拌櫄緇ф壙鍜岃嚜韜殑铏氬嚱鏁幫紝鎴戜滑涔熷彲浠ョ畻鍑烘潵璧峰ぇ灝忎負(fù)8+8+4 = 20
瀵逛簬C錛屽叾澶у皬涓?0+8+4 = 32銆?br>鍏朵腑 4涓鴻櫄緇ф壙鎵鍗犵敤鐨勬寚閽堛?br>
榪欎釜鐪嬩笂鍘繪病鏈変粈涔堥棶棰樸備絾鏄綋鎴戞妸铏氱戶鎵垮幓鎺変互鍚庯紝榪欓噷鍗存湁浜嗕竴浜涘彉鍖栵紵
棣栧厛錛屾垜鐚滄兂浜嗕竴涓嬶紝A鏄?錛孊鏄?6錛孋鏄?4銆?br>鍙儨緇撴灉鍜屾垜鎯崇殑涓嶄竴鏍鳳紝絳旀鏄?錛?12錛?16銆傚緢鏈夎寰嬬殑涓涓暟瀛椼?br>浠嶢鍒癇錛屽彧澧炲姞浜?銆備粈涔堝師鍥犲憿錛?br>
鍦?a >http://www.diybl.com/course/3_program/c++/cppjs/2007927/74925.html榪欓噷浠嬬粛浜嗕竴浜?/p>
媧劇敓綾誨拰鍩虹被鎷ユ湁鐩稿悓鐨勮櫄鍑芥暟琛ㄣ?br>
浣嗕技涔庤櫄緇ф壙鐨勬椂鍊欙紝鍙堟憟寮冧簡榪欎竴鍋氭硶銆?br>
鎵浠ヤ袱涓槸鏈夋墍鍖哄埆鐨勩?/p>
鍦ㄧ綉涓婃悳浜嗕竴涓嬶細(xì)
鍦?a >http://blog.csdn.net/djsl6071/archive/2007/03/16/1531336.aspx涓粙緇嶄簡嫻偣鏁板湪鍐呭瓨涓殑瀛樺偍鏂瑰紡錛岃寰椾笉閿欙紝杞繃鏉ャ?br>
嫻偣鏁板湪鍐呭瓨涓殑瀛樺偍鏂瑰紡
嫻偣鏁頒繚瀛樼殑瀛楄妭鏍煎紡濡備笅錛?/p>
鍐呭 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S 浠h〃絎﹀彿浣嶏紝1鏄礋錛?鏄
E 鍋忕Щ127鐨勫箓錛屼簩榪涘埗闃剁爜=(EEEEEEEE)-127銆?br>M 24浣嶇殑灝炬暟淇濆瓨鍦?3浣嶄腑錛屽彧瀛樺偍23浣嶏紝鏈楂樹綅鍥哄畾涓?銆傛鏂規(guī)硶鐢ㄦ渶杈冨皯鐨勪綅鏁板疄鐜頒簡
杈冮珮鐨勬湁鏁堜綅鏁幫紝鎻愰珮浜嗙簿搴︺?/p>
鍦板潃 +0 +1 +2 +3
鍐呭0xC1 0x48 0x00 0x00
鎵鍒楃殑閭f牱鍒嗗紑錛屼緥濡傦細(xì)
鏍煎紡 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
浜岃繘鍒?nbsp; 11000001 01001000 00000000 00000000
鍗佸叚榪涘埗 C1 48 00 00
鍦ㄥ熬鏁扮殑宸﹁竟鏈変竴涓渷鐣ョ殑灝忔暟鐐瑰拰1,榪欎釜1鍦ㄦ誕鐐規(guī)暟鐨勪繚瀛樹腑緇忓父鐪佺暐,鍔犱笂涓涓?鍜屽皬鏁?br>鐐瑰埌灝炬暟鐨勫紑澶?寰楀埌灝炬暟鍊煎涓?
1.10010000000000000000000
鎸囨暟鏄?,灝炬暟璋冩暣濡備笅:
1100.10000000000000000000
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12銆?br>灝忔暟鐐圭殑鍙寵竟涔熶唬琛ㄦ墍澶勪綅緗殑2鐨勫箓錛屽彧鏄箓鏄礋鐨勩備緥濡傦細(xì).100...琛ㄧず(1*2^(-1))+
(0*2^(-2))+(0*2^(-2))...=0.5銆?br>榪欎簺鍊肩殑鍜屾槸12.5銆傚洜涓鴻緗殑絎﹀彿浣嶈〃紺鴻繖鏁版槸璐熺殑錛屽洜姝ゅ崄鍏繘鍒跺?xC1480000琛ㄧず-
12.5銆?br>
鍏充簬澶氬瓧鑺傛暟鎹被鍨嬪湪鍐呭瓨涓殑瀛樺偍闂
int ,short 鍒嗗埆鏄?銆?瀛楄妭銆備粬浠湪鍐呭瓨涓殑瀛樺偍鏂瑰紡涓嬮潰涓句釜渚嬪瓙璇存槑銆?/p>
鍏朵腑浣庝綅瀛樻斁鍦ㄧ紪鍧灝忕殑鍐呭瓨鍗曞厓錛岄珮浣嶅瓨鏀懼湪緙栧潃楂樼殑鍐呭瓨鍗曞厓
濡備笅錛?br>鍦板潃錛?x8000 0x8001 0x8002 0x8003
鏁版嵁錛?nbsp; f1 f2 f3 f4
鏍規(guī)嵁IEEE鍦?985騫村埗瀹氱殑鏍囧噯鏉ュ鐞嗘誕鐐規(guī)暟
鍗曠簿搴︽誕鐐規(guī)暟鐢?瀛楄妭錛屽寘鎷?浣嶇鍙蜂綅s(鏁存暟涓?錛岃礋鏁頒負(fù)1)錛?浣嶆寚鏁頒綅e錛?3浣嶆湁鏁堜綅f
嫻偣鍨嬩嬌鐢ㄧ殑鏄瀛﹁鏁版硶錛屾瘮濡傚崄榪涘埗鐨?2345鍙互琛ㄧず涓?.2345 * 10^4(琛ㄧず10鐨?嬈″箓)
鐢ㄤ簩榪涘埗琛ㄧず涓?1.1000000111001 * 2^13
鎵浠ヨ綆楁満涓敤嫻偣鏁拌〃紺?2345榪欎釜鍗佽繘鍒跺簲璇ユ槸榪欐牱鐨勶紝s浣嶄負(fù)0錛屽洜涓烘槸姝f暟錛屾寚鏁頒綅涓?3+127=140(127涓哄崟綺懼害嫻偣鏁板亸縐誨鹼紝涓轟簡琛ㄧず鍙湁灝忔暟閮ㄥ垎鐨勬暟)錛屾湁鏁堜綅涓?000000111001
璁$畻鐨勬椂鍊欑敤 (-1)^s * 1.f * 2^(e-127) 錛岀粨鏋滃氨鏄?1* 1.1000000111001 * 2^(140-127=13) 錛屽拰鎴戜滑鍒氭墠琛ㄧず鐨勪竴鏍?br>榪樻瘮濡傦紝鍗佽繘鍒跺皬鏁?.125杞崲涓轟簩榪涘埗灝忔暟0.001鍙互琛ㄧず涓?1* 1.0 * 2^(124-127=-3)
double錛屽弻綺懼害嫻偣鏁版湁1浣嶇鍙蜂綅銆?1浣嶆寚鏁頒綅鍜?2浣嶆湁鏁堟暟
璋㈣阿錛屽拰鎴戞壘鐨勮祫鏂欏樊涓嶅錛氾級
鐭ラ亾鍏紡
n=(-1)^s*m*2^e
e=|E|-bias
bias = 2^(k-1)-1(k涓篍鐨勪綅鏁幫級
m=|1.M|
鐭ラ亾12345鍦ㄥ唴瀛樹腑鐨?0榪涘埗琛ㄧず浠ュ悗
0x4640e400 = 0(100 0110 0)<100 0000 1110 0100 0000>
鎷彿涓殑鏁板瓧涓簗E| 錛?140 鎵浠錛?40錛?27錛?3
灝栨嫭鍙蜂腑鐨勬暟瀛椾負(fù)m=|1.M|錛濓綔1.100000011100100锝滐紳1.506958008
ok,
浠e叆鍏紡n = (-1)^0*1.506958008*2^13=12345
瀹屽伐錛侊紒
]]>
Windows緋葷粺騫挎硾浣跨敤DLL錛岄偅涔堟垜浠嬌鐢―LL鐨勭悊鐢辨槸浠涔堬紵涓嬮潰鏄湪銆奧indows 鏍稿績緙栫▼涓嬫憳褰曠殑涓閮ㄥ垎錛?br> 涓鏄墿灞曚簡搴旂敤紼嬪簭鐨勭壒鎬э紱
浜屾槸綆鍖栦簡欏圭洰鐨勭鐞嗭紱
涓夋槸鏈夊姪浜庤妭鐪佸唴瀛橈紱
鍥涙槸淇冭繘浜嗚祫婧愮殑鍏變韓錛?br> 浜旀槸淇冭繘浜嗘湰鍦板寲錛?br> 鍏槸鏈夊姪浜庤В鍐沖鉤鍙伴棿鐨勫樊寮傦紱
涓冩槸鍙互鐢ㄤ簬鐗規(guī)畩鐩殑銆?nbsp;
鐩墠鐢ㄥ埌鐨勫湴鏂瑰湪 鑺傜渷鍐呭瓨銆佽祫婧愬叡浜佹湰鍦板寲銆佺壒孌婄洰鐨勩傝繖鍑犱釜鏄垜鍦ㄩ」鐩腑瑙佽繃鐨勩侱LL濡備綍浣跨敤鍛紵涓鑸湁涓ょ鏂規(guī)硶錛屼竴鏄殣寮忚澆鍏ユ椂閾炬帴(implicit load-time linking)鍜屾樉紺鴻繍琛屾椂閾炬帴錛坋xplicit run-time linking錛夈?br> 闅愬紡閾炬帴錛屽父鐢ㄧ殑鏂規(guī)硶鏄皢DLL鐨勫ご鏂囦歡鍜孡IB鏂囦歡鍖呭惈鍒版墽琛屾枃浠剁▼搴忎腑錛岀浉搴擠LL鏀懼埌鎵ц鏂囦歡瀵瑰簲鐨勭洰褰曘傚熀鏈氨O(jiān)K浜嗐?br> 渚嬪錛?br> DLL涓篗yLib.dll錛屽叾澶存枃浠朵負(fù)MyLib.h, LIB鏂囦歡涓篗yLib.lib銆?br> 鎴戜滑鍦ㄦ墽琛屾枃浠朵腑浣跨敤鏄紝闇瑕佸仛濡備笅鎿嶄綔錛?br> #include "MyLib.h"
#pragma comment(lib, "MyLib.lib")
鍗沖彲瀹炵幇闅愬紡璋冪敤錛屽彉閲忋佸嚱鏁般佺被灝卞彲瀹炵幇璋冪敤銆?br> 榪欓噷lib鏂囦歡闈炲父灝忥紝瀹冨茍涓嶅寘鍚換浣曞嚱鏁版垨鍙橀噺錛屽畠鍙槸鍒楀嚭浜嗘墍鏈夎瀵煎嚭鐨勫嚱鏁板拰鍙橀噺鐨勫彉閲忓悕錛屽叿浣撶殑瀹炵幇鍦╠ll鏂囦歡涓傜紪璇戦樁孌典笉鍖呭惈Lib鏂囦歡浼?xì)鍑洪敊鐨勩?br> 鏄劇ず閾炬帴錛屽湪搴旂敤紼嬪簭榪愯鐨勮繃紼嬩腑錛屾樉紺哄湴杞藉叆鎵闇鐨凞LL銆?br> 涓鑸彲浠ヤ嬌鐢↙oadLibrary鍜孎reeLibrary鏉ュ疄鐜板姞杞藉拰鍗歌澆DLL銆傞偅涔堝浣曞垽鏂竴涓狣LL鏄惁宸茬粡琚槧灝勫埌浜嗚繘紼嬬殑鍦板潃絀洪棿涓紵鎴戜滑鍙互浣跨敤GetModuleHandle.
濡?
HMODULE hInstDll = GetModuleHandle(TEXT("MyLib"));
if (hInstDll == NULL)
{
hInstDll = LoadLibrary(TEXT("MyLib"));
}
鎴戜滑宸茬粡鐭ラ亾濡備綍鏄劇ず鍔犺澆DLL錛岄偅濡備綍鏄劇ず璋冪敤鍏朵腑鐨勫彉閲忋佸嚱鏁般佺被鍛紵
渚嬪鍦―LL涓紝鎴戜滑鏈変竴涓彉閲?g_nResult, 鍑芥暟Add錛屾垜浠湪鎵ц紼嬪簭涓浣曡皟鐢ㄥ憿錛熷彲浠ュ埄鐢℅etProcAddress銆?br> 瀵逛簬鍙橀噺錛?br> int nResult =*(int*)GetProcAddress(hInstDll, "g_nResult");
瀵逛簬鍑芥暟錛?br> typedef int (*FUNC)(int, int);
FUNC pfn = (FUNC)GetProcAddress(hInstDll, "Add");
榪欐槸浠婂ぉ瀛︿範(fàn)鍒扮殑鍏充簬DLL鐨勪竴鐐圭煡璇嗐?br>
#include <iostream>
using namespace std;
class BST

{
public:
BST()
{
i = 0;
}
int i;
};
class BalancedBST: public BST

{
private:
int j;
};
void printBSTArray(ostream& out, const BST arr[], int numElements)

{
for (int i = 0; i < numElements; i++)
{
out << arr[i].i << endl;
}
}
int main()

{
cout << "BST
.\n";
BST BSTArray[10];
printBSTArray(cout, BSTArray, 10);
cout << "BalancedBST
.\n";
BalancedBST bBSTArray[10];
printBSTArray(cout, bBSTArray, 10);
system("pause");
return 0;
}
鍏剁粨鏋滃涓嬶細(xì)

鍙互鐪嬪埌紼嬪簭騫朵笉濡傛垜浠墍鏈熸湜鐨勯偅鏍鳳紝榪欒鏄庝粈涔堝憿錛?br> arr[i],琛ㄧず鐨勬槸*錛坅rr+i錛?浣嗘槸arr+i鎵鎸囧悜鐨勫湴鍧鍋忕arr鎵鎸囧悜鐨勫湴鍧鏄痠*(an object in the array)銆?br>鍥犱負(fù)鍙傛暟琚0鏄庝負(fù)BST鏁扮粍綾誨瀷錛岄偅涔堟暟緇勭殑姣忎釜鍏冪礌蹇呴』鏄疊ST錛岄偅涔堝畠浠殑闂撮殧涔熸瘯瀹氭槸i*sizeof(BST)銆傚鏋滀紶鍏alancedBST鏁扮粍錛岀紪璇戝櫒鍙兘灝變細(xì)鐘敊璇紝鍦ㄨ繖縐嶆儏鍐典笅錛岀紪璇戝櫒灝變細(xì)鍋囧畾鏁扮粍閲屾瘡涓璞$殑澶у皬閮藉拰BST鐨勫ぇ灝忎竴鏍楓傝岄氬父媧劇敓綾昏姣斿熀綾繪湁鏇村鐨勬垚鍛樺彉閲忥紝鎵浠ユ淳鐢熺被涓鑸兘姣斿熀綾誨璞″ぇ銆傛墍浠ユ垜浠氨鐪嬪埌浜嗗涓婄殑緇撴灉銆?br>
璇曞浘閫氳繃涓涓熀綾繪寚閽堝垹闄や竴涓寘鍚淳鐢熺被瀵硅薄鐨勬暟緇勶紝涔熶細(xì)鏈夊悓鏍風(fēng)殑闂銆?br>
鎵浠ヤ笉瑕佹妸澶氬彴搴旂敤鍒版暟緇勪笂錛岃繕鏄緢鏈夊ソ澶勭殑銆?/p>
BOOL CopyAndDel(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName)

{
if (CopyFile(lpExistingFileName, lpNewFileName, FALSE))
{
if (!DeleteFile(lpExistingFileName))
{
SetFileAttributes(lpExistingFileName, FILE_ATTRIBUTE_NORMAL);
return DeleteFile(lpExistingFileName);
}
return TRUE;
}
return FALSE;
}
榪欎釜灝忓嚱鏁扮殑緙洪櫡鍦ㄤ簬榪橀渶瑕佽冭檻鍒犻櫎鏂囦歡鐨勫睘鎬ч棶棰樸備技涔庡埄鐢∕oveFile鍜孌eleteAndRenameFile緇勫悎鏇村ソ涓浜涖?br>
榪欓噷鎬葷粨涓涓嬶細(xì)
MoveFile 閲嶅懡鍚嶄竴涓枃浠舵垨鐩綍錛屽寘鎷畠鎵鏈夌殑瀛╁瓙銆傚彲瀵規(guī)枃浠跺す榪涜鎿嶄綔銆備笉榪囬渶瑕佷繚璇佺殑鏄柊鏂囦歡鎴栨柊鏂囦歡澶逛笉瀛樺湪錛屽惁鍒欒皟鐢ㄥけ璐ャ?br>DeleteAndRenameFile 褰撴嫹璐濇簮鏂囦歡鐨勫唴瀹瑰埌鐩殑鏂囦歡鍚庯紝鍒犻櫎婧愭枃浠躲傞渶瑕佷繚璇佺洰鐨勬枃浠跺湪璋冪敤鍓嶅凡緇忓瓨鍦ㄣ?br>CopyFile 鎷瘋礉涓涓凡緇忓瓨鍦ㄧ殑鏂囦歡錛屽茍鐢熸垚涓涓柊鐨勬枃浠躲備笉鑳藉鏂囦歡澶硅繘琛屾搷浣溿?br>DeleteFile 鍒犻櫎涓涓枃浠躲備笉鑳藉垹闄ゆ枃浠跺す銆傝鍑芥暟鍒犻櫎澶辮觸鐨勬椂鍊欙紝鑰冭檻涓涓嬫枃浠剁殑灞炴ч棶棰樸?br>RemoveDirectory 鍒犻櫎涓涓┖鐨勬枃浠跺す銆?br>