锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品日本欧美一区二区三区,久久久久久欧美,国产精品一二三四http://m.shnenglu.com/zmllegtui/category/8634.htmlNothing in my mind.zh-cnThu, 19 Sep 2013 20:15:50 GMTThu, 19 Sep 2013 20:15:50 GMT60Void and void pointerhttp://m.shnenglu.com/zmllegtui/archive/2009/11/22/101630.htmlzml_cnnkzml_cnnkSun, 22 Nov 2009 08:14:00 GMThttp://m.shnenglu.com/zmllegtui/archive/2009/11/22/101630.htmlhttp://m.shnenglu.com/zmllegtui/comments/101630.htmlhttp://m.shnenglu.com/zmllegtui/archive/2009/11/22/101630.html#Feedback6http://m.shnenglu.com/zmllegtui/comments/commentRss/101630.htmlhttp://m.shnenglu.com/zmllegtui/services/trackbacks/101630.html         
         1.姒傝堪

銆銆璁稿鍒濆鑰呭C/C++璇█涓殑void鍙?qiáng)void鎸囬拡綾誨瀷涓嶇敋鐞嗚В錛屽洜姝ゅ湪浣跨敤涓婂嚭鐜頒簡(jiǎn)涓浜涢敊璇傛湰鏂囧皢瀵箆oid鍏抽敭瀛楃殑娣卞埢鍚箟榪涜瑙h錛屽茍璇﹁堪void鍙?qiáng)void鎸囬拡綾誨瀷鐨勪嬌鐢ㄦ柟娉曚笌鎶宸с?br>
銆銆2.void鐨勫惈涔?/strong>

銆銆void鐨勫瓧闈㈡剰鎬濇槸“鏃犵被鍨?#8221;錛寁oid *鍒欎負(fù)“鏃犵被鍨嬫寚閽?#8221;錛寁oid *鍙互鎸囧悜浠諱綍綾誨瀷鐨勬暟鎹?br>
銆銆void鍑犱箮鍙湁“娉ㄩ噴”鍜岄檺鍒剁▼搴忕殑浣滅敤錛屽洜涓轟粠鏉ユ病鏈変漢浼?xì)瀹氫箟涓涓獀oid鍙橀噺錛岃鎴戜滑璇曠潃鏉ュ畾涔夛細(xì)

void a;

銆銆榪欒璇彞緙栬瘧鏃朵細(xì)鍑洪敊錛屾彁紺?#8220;illegal use of type 'void'”銆備笉榪囷紝鍗充嬌void a鐨勭紪璇戜笉浼?xì)鍑洪敊锛屽畠涔熸病鏈変恢M綍瀹為檯鎰忎箟銆?br>
銆銆void鐪熸鍙戞尌鐨勪綔鐢ㄥ湪浜庯細(xì)

銆銆錛?錛夊鍑芥暟榪斿洖鐨勯檺瀹氾紱

銆銆錛?錛夊鍑芥暟鍙傛暟鐨勯檺瀹氥?br>
銆銆鎴戜滑灝嗗湪絎笁鑺傚浠ヤ笂浜岀偣榪涜鍏蜂綋璇存槑銆?br>
銆銆浼楁墍鍛ㄧ煡錛屽鏋滄寚閽坧1鍜宲2鐨勭被鍨嬬浉鍚岋紝閭d箞鎴戜滑鍙互鐩存帴鍦╬1鍜宲2闂翠簰鐩歌祴鍊鹼紱濡傛灉p1鍜宲2鎸囧悜涓嶅悓鐨勬暟鎹被鍨嬶紝鍒欏繀欏諱嬌鐢ㄥ己鍒剁被鍨嬭漿鎹㈣繍綆楃鎶婅祴鍊艱繍綆楃鍙寵竟鐨勬寚閽堢被鍨嬭漿鎹負(fù)宸﹁竟鎸囬拡鐨勭被鍨嬨?

銆銆渚嬪錛?br>
float *p1;
int *p2;
p1 = p2;

銆銆鍏朵腑p1 = p2璇彞浼?xì)缂栬瘧鍑洪敊锛屾彁绀?#8220;'=' : cannot convert from 'int *' to 'float *'”錛屽繀欏繪敼涓猴細(xì)

p1 = (float *)p2;

銆銆鑰寁oid *鍒欎笉鍚岋紝浠諱綍綾誨瀷鐨勬寚閽堥兘鍙互鐩存帴璧嬪肩粰瀹冿紝鏃犻渶榪涜寮哄埗綾誨瀷杞崲錛?

void *p1;
int *p2;
p1 = p2;

銆銆浣嗚繖騫朵笉鎰忓懗鐫錛寁oid *涔熷彲浠ユ棤闇寮哄埗綾誨瀷杞崲鍦拌祴緇欏叾瀹冪被鍨嬬殑鎸囬拡銆傚洜涓?#8220;鏃犵被鍨?#8221;鍙互鍖呭“鏈夌被鍨?#8221;錛岃?#8220;鏈夌被鍨?#8221;鍒欎笉鑳藉寘瀹?#8220;鏃犵被鍨?#8221;銆傞亾鐞嗗緢綆鍗曪紝鎴戜滑鍙互璇?#8220;鐢蜂漢鍜屽コ浜洪兘鏄漢”錛屼絾涓嶈兘璇?#8220;浜烘槸鐢蜂漢”鎴栬?#8220;浜烘槸濂充漢”銆備笅闈㈢殑璇彞緙栬瘧鍑洪敊錛?br>
void *p1;
int *p2;
p2 = p1;

銆銆鎻愮ず“'=' : cannot convert from 'void *' to 'int *'”銆?br>
3.void鐨勪嬌鐢?br>
銆銆涓嬮潰緇欏嚭void鍏抽敭瀛楃殑浣跨敤瑙勫垯錛?br>
銆銆瑙勫垯涓濡傛灉鍑芥暟娌℃湁榪斿洖鍊鹼紝閭d箞搴斿0鏄庝負(fù)void綾誨瀷

銆銆鍦–璇█涓紝鍑′笉鍔犺繑鍥炲肩被鍨嬮檺瀹氱殑鍑芥暟錛屽氨浼?xì)琚~栬瘧鍣ㄤ綔涓鴻繑鍥炴暣鍨嬪煎鐞嗐備絾鏄澶氱▼搴忓憳鍗磋浠ヤ負(fù)鍏朵負(fù)void綾誨瀷銆備緥濡傦細(xì)

add ( int a, int b )
{
return a + b;
}
int main(int argc, char* argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}

銆銆紼嬪簭榪愯鐨勭粨鏋滀負(fù)杈撳嚭錛?br>
銆銆2 + 3 = 5

銆銆榪欒鏄庝笉鍔犺繑鍥炲艱鏄庣殑鍑芥暟鐨勭‘涓篿nt鍑芥暟銆?br>
銆銆鏋楅攼鍗氬+銆婇珮璐ㄩ噺C/C++緙栫▼銆嬩腑鎻愬埌錛?#8220;C++璇█鏈夊緢涓ユ牸鐨勭被鍨嬪畨鍏ㄦ鏌ワ紝涓嶅厑璁鎬笂榪版儏鍐碉紙鎸囧嚱鏁頒笉鍔犵被鍨嬪0鏄庯級(jí)鍙戠敓”銆傚彲鏄紪璇戝櫒騫朵笉涓瀹氳繖涔堣瀹氾紝璀鍦╒isual C++6.0涓笂榪癮dd鍑芥暟鐨勭紪璇戞棤閿欎篃鏃犺鍛婁笖榪愯姝g‘錛屾墍浠ヤ笉鑳藉瘎甯屾湜浜庣紪璇戝櫒浼?xì)鍋氫弗鏍肩殑绫诲瀷妫鏌ャ?br>
銆銆鍥犳錛屼負(fù)浜?jiǎn)閬垮厤尕滀贡锛屾垜浠湪缂栧啓C(jī)/C++紼嬪簭鏃訛紝瀵逛簬浠諱綍鍑芥暟閮藉繀欏諱竴涓笉婕忓湴鎸囧畾鍏剁被鍨嬨傚鏋滃嚱鏁版病鏈夎繑鍥炲鹼紝涓瀹氳澹版槑涓簐oid綾誨瀷銆傝繖鏃㈡槸紼嬪簭鑹ソ鍙鎬х殑闇瑕侊紝涔熸槸緙栫▼瑙勮寖鎬х殑瑕佹眰銆傚彟澶栵紝鍔犱笂void綾誨瀷澹版槑鍚庯紝涔熷彲浠ュ彂鎸ヤ唬鐮佺殑“鑷敞閲?#8221;浣滅敤銆備唬鐮佺殑“鑷敞閲?#8221;鍗充唬鐮佽兘鑷繁娉ㄩ噴鑷繁銆?br>
銆銆瑙勫垯浜屽鏋滃嚱鏁版棤鍙傛暟錛岄偅涔堝簲澹版槑鍏跺弬鏁頒負(fù)void

銆銆鍦–++璇█涓0鏄庝竴涓繖鏍風(fēng)殑鍑芥暟錛?br>
int function(void)
{
return 1;
}

銆銆鍒欒繘琛屼笅闈㈢殑璋冪敤鏄笉鍚堟硶鐨勶細(xì)

function(2);

銆銆鍥犱負(fù)鍦–++涓紝鍑芥暟鍙傛暟涓簐oid鐨勬剰鎬濇槸榪欎釜鍑芥暟涓嶆帴鍙椾換浣曞弬鏁般?br>
銆銆鎴戜滑鍦═urbo C 2.0涓紪璇戯細(xì)

#include "stdio.h"
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}

銆銆緙栬瘧姝g‘涓旇緭鍑?錛岃繖璇存槑錛屽湪C璇█涓紝鍙互緇欐棤鍙傛暟鐨勫嚱鏁頒紶閫佷換鎰忕被鍨嬬殑鍙傛暟錛屼絾鏄湪C++緙栬瘧鍣ㄤ腑緙栬瘧鍚屾牱鐨勪唬鐮佸垯浼?xì)鍑洪敊銆傚湪C++涓紝涓嶈兘鍚戞棤鍙傛暟鐨勫嚱鏁頒紶閫佷換浣曞弬鏁幫紝鍑洪敊鎻愮ず“'fun' : function does not take 1 parameters”銆?br>
銆銆鎵浠ワ紝鏃犺鍦–榪樻槸C++涓紝鑻ュ嚱鏁頒笉鎺ュ彈浠諱綍鍙傛暟錛屼竴瀹氳鎸囨槑鍙傛暟涓簐oid銆?br>
銆銆瑙勫垯涓夊皬蹇?jī)鋴社敤void鎸囬拡綾誨瀷

銆銆鎸夌収ANSI(American National Standards Institute)鏍囧噯錛屼笉鑳藉void鎸囬拡榪涜綆楁硶鎿嶄綔錛屽嵆涓嬪垪鎿嶄綔閮芥槸涓嶅悎娉曠殑錛?br>
void * pvoid;
pvoid++; //ANSI錛氶敊璇?br>pvoid += 1; //ANSI錛氶敊璇?br>//ANSI鏍囧噯涔嬫墍浠ヨ繖鏍瘋瀹氾紝鏄洜涓哄畠鍧氭寔錛氳繘琛岀畻娉曟搷浣滅殑鎸囬拡蹇呴』鏄‘瀹氱煡閬撳叾鎸囧悜鏁版嵁綾誨瀷澶у皬鐨勩?br>//渚嬪錛?br>int *pint;
pint++; //ANSI錛氭紜?/td>

銆銆pint++鐨勭粨鏋滄槸浣垮叾澧炲ぇsizeof(int)銆?br>
銆銆浣嗘槸澶у悕榧庨紟鐨凣NU(GNU's Not Unix鐨勭緝鍐?鍒欎笉榪欎箞璁ゅ畾錛屽畠鎸囧畾void *鐨勭畻娉曟搷浣滀笌char *涓鑷淬?br>
銆銆鍥犳涓嬪垪璇彞鍦℅NU緙栬瘧鍣ㄤ腑鐨嗘紜細(xì)

pvoid++; //GNU錛氭紜?br>pvoid += 1; //GNU錛氭紜?/td>

銆銆pvoid++鐨勬墽琛岀粨鏋滄槸鍏跺澶т簡(jiǎn)1銆?br>
銆銆鍦ㄥ疄闄呯殑紼嬪簭璁捐涓紝涓鴻繋鍚圓NSI鏍囧噯錛屽茍鎻愰珮紼嬪簭鐨勫彲縐繪鎬э紝鎴戜滑鍙互榪欐牱緙栧啓瀹炵幇鍚屾牱鍔熻兘鐨勪唬鐮侊細(xì)

void * pvoid;
(char *)pvoid++; //ANSI錛氭紜紱GNU錛氭紜?br>(char *)pvoid += 1; //ANSI錛氶敊璇紱GNU錛氭紜?/td>

銆銆GNU鍜孉NSI榪樻湁涓浜涘尯鍒紝鎬諱綋鑰岃█錛孏NU杈傾NSI鏇?#8220;寮鏀?#8221;錛屾彁渚涗簡(jiǎn)瀵規(guī)洿澶氳娉曠殑鏀寔銆備絾鏄垜浠湪鐪熷疄璁捐鏃訛紝榪樻槸搴旇灝藉彲鑳藉湴榪庡悎ANSI鏍囧噯銆?br>
銆銆瑙勫垯鍥涘鏋滃嚱鏁扮殑鍙傛暟鍙互鏄換鎰忕被鍨嬫寚閽堬紝閭d箞搴斿0鏄庡叾鍙傛暟涓簐oid *

銆銆鍏稿瀷鐨勫鍐呭瓨鎿嶄綔鍑芥暟memcpy鍜宮emset鐨勫嚱鏁板師鍨嬪垎鍒負(fù)錛?br>
void * memcpy(void *dest, const void *src, size_t len);
void * memset ( void * buffer, int c, size_t num );

銆銆榪欐牱錛屼換浣曠被鍨嬬殑鎸囬拡閮藉彲浠ヤ紶鍏emcpy鍜宮emset涓紝榪欎篃鐪熷疄鍦頒綋鐜頒簡(jiǎn)鍐呭瓨鎿嶄綔鍑芥暟鐨勬剰涔夛紝鍥犱負(fù)瀹冩搷浣滅殑瀵硅薄浠呬粎鏄竴鐗囧唴瀛橈紝鑰屼笉璁鴻繖鐗囧唴瀛樻槸浠涔堢被鍨嬨傚鏋渕emcpy鍜宮emset鐨勫弬鏁扮被鍨嬩笉鏄痸oid *錛岃屾槸char *錛岄偅鎵嶅彨鐪熺殑濂囨簡(jiǎn)錛佽繖鏍風(fēng)殑memcpy鍜宮emset鏄庢樉涓嶆槸涓涓?#8220;綰補(bǔ)鐨勶紝鑴辯浣庣駭瓚e懗鐨?#8221;鍑芥暟錛?br>
銆銆涓嬮潰鐨勪唬鐮佹墽琛屾紜細(xì)

//紺轟緥錛歮emset鎺ュ彈浠繪剰綾誨瀷鎸囬拡
int intarray[100];
memset ( intarray, 0, 100*sizeof(int) ); //灝唅ntarray娓?
//紺轟緥錛歮emcpy鎺ュ彈浠繪剰綾誨瀷鎸囬拡
int intarray1[100], intarray2[100];
memcpy ( intarray1, intarray2, 100*sizeof(int) ); //灝唅ntarray2鎷瘋礉緇檌ntarray1

銆銆鏈夎叮鐨勬槸錛宮emcpy鍜宮emset鍑芥暟榪斿洖鐨勪篃鏄痸oid *綾誨瀷錛屾爣鍑嗗簱鍑芥暟鐨勭紪鍐欒呮槸澶氫箞鍦板瘜鏈夊闂晩錛?br>
銆銆瑙勫垯浜?void涓嶈兘浠h〃涓涓湡瀹炵殑鍙橀噺

銆銆涓嬮潰浠g爜閮戒紒鍥捐void浠h〃涓涓湡瀹炵殑鍙橀噺錛屽洜姝ら兘鏄敊璇殑浠g爜錛?br>
void a; //閿欒
function(void a); //閿欒

銆銆void浣撶幇浜?jiǎn)涓縐嶆娊璞★紝榪欎釜涓栫晫涓婄殑鍙橀噺閮芥槸“鏈夌被鍨?#8221;鐨勶紝璀涓涓漢涓嶆槸鐢蜂漢灝辨槸濂充漢錛堣繕鏈変漢濡栵紵錛夈?br>
銆銆void鐨勫嚭鐜板彧鏄負(fù)浜?jiǎn)涓縐嶆娊璞$殑闇瑕侊紝濡傛灉浣犳紜湴鐞嗚В浜?jiǎn)闈㈠悜瀵硅薄涓?#8220;鎶借薄鍩虹被”鐨勬蹇碉紝涔熷緢瀹規(guī)槗鐞嗚Вvoid鏁版嵁綾誨瀷銆傛濡備笉鑳界粰鎶借薄鍩虹被瀹氫箟涓涓疄渚嬶紝鎴戜滑涔熶笉鑳藉畾涔変竴涓獀oid錛堣鎴戜滑綾繪瘮鐨勭Оvoid涓?#8220;鎶借薄鏁版嵁綾誨瀷”錛夊彉閲忋?br>
銆銆4.鎬葷粨

銆銆灝忓皬鐨剉oid钑磋棌鐫寰堜赴瀵岀殑璁捐鍝插錛屼綔涓轟竴鍚嶇▼搴忚璁′漢鍛橈紝瀵歸棶棰樿繘琛屾繁涓涓眰嬈$殑鎬濊冨繀鐒朵嬌鎴戜滑鍙楃泭鍖祬


zml_cnnk 2009-11-22 16:14 鍙戣〃璇勮
]]>
Type Attribute alignedhttp://m.shnenglu.com/zmllegtui/archive/2009/11/22/101617.htmlzml_cnnkzml_cnnkSun, 22 Nov 2009 06:28:00 GMThttp://m.shnenglu.com/zmllegtui/archive/2009/11/22/101617.htmlhttp://m.shnenglu.com/zmllegtui/comments/101617.htmlhttp://m.shnenglu.com/zmllegtui/archive/2009/11/22/101617.html#Feedback0http://m.shnenglu.com/zmllegtui/comments/commentRss/101617.htmlhttp://m.shnenglu.com/zmllegtui/services/trackbacks/101617.html 

Type attribute aligned allows you to specify the alignment of a structure, class, union, or enumeration. The syntax and considerations for specifying alignment factor are the same as for variable attribute aligned. Like variable attribute aligned, type attribute aligned can only increase alignment. Type attribute packed is used to decrease alignment.

If the attribute appears immediately after the class, struct, union, or enumeration token or immediately after the closing right curly brace, it applies to the type identifier. It can also be specified on a typedef declaration. In a variable declaration, such as

class A {} a;

the placement of the type attribute can be confusing.

In the following definitions, the attribute applies to A:

struct __attribute__((__aligned__(8))) A {};
struct A {} __attribute__((__aligned__(8))) ;
struct __attribute__((__aligned__(8))) A {} a;
struct A {} __attribute__((__aligned__(8))) a;
typedef struct __attribute__((__aligned__(8))) A {} a;
typedef struct A {} __attribute__((__aligned__(8))) a;

In the following definitions, the attribute applies to a:

__attribute__((__aligned__(8))) struct A {} a;
struct A {} const __attribute__((__aligned__(8))) a;
__attribute__((__aligned__(8))) typedef struct A {} a;
typedef __attribute__((__aligned__(8))) struct A {} a;
typedef struct A {} const __attribute__((__aligned__(8))) a;
typedef struct A {} a __attribute__((__aligned__(8)));


zml_cnnk 2009-11-22 14:28 鍙戣〃璇勮
]]>
铏氬嚱鏁頒笌澶氭侊紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65386.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:28:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65386.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65386.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65386.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65386.html</trackback:ping><description><![CDATA[<p>铏氬嚱鏁版槸C++涓敤浜庡疄鐜板鎬?polymorphism)鐨勬満鍒躲傛牳蹇?jī)鐞嗗康灏辨槸閫氳繃鍩虹被璁塊棶媧劇敓綾誨畾涔夌殑鍑芥暟銆傚亣璁炬垜浠湁涓嬮潰鐨勭被灞傛錛?br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void foo() { cout << "A::foo() is called" << endl;}<br>};<br>class B: public A<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void foo() { cout << "B::foo() is called" << endl;}<br>};</p> <p>閭d箞錛屽湪浣跨敤鐨勬椂鍊欙紝鎴戜滑鍙互錛?br>A * a = new B();<br>a->foo(); // 鍦ㄨ繖閲岋紝a铏界劧鏄寚鍚慉鐨勬寚閽堬紝浣嗘槸琚皟鐢ㄧ殑鍑芥暟(foo)鍗存槸B鐨?</p> <p>榪欎釜渚嬪瓙鏄櫄鍑芥暟鐨勪竴涓吀鍨嬪簲鐢紝閫氳繃榪欎釜渚嬪瓙錛屼篃璁鎬綘灝卞铏氬嚱鏁版湁浜?jiǎn)涓浜涙蹇點(diǎn)傚畠铏氬氨铏氬湪鎵璋?#8220;鎺ㄨ繜鑱旂紪”鎴栬?#8220;鍔ㄦ佽仈緙?#8221;涓婏紝涓涓被鍑芥暟鐨勮皟鐢ㄥ茍涓嶆槸鍦ㄧ紪璇戞椂鍒昏紜畾鐨勶紝鑰屾槸鍦ㄨ繍琛屾椂鍒昏紜畾鐨勩傜敱浜庣紪鍐欎唬鐮佺殑鏃跺欏茍涓嶈兘紜畾琚皟鐢ㄧ殑鏄熀綾葷殑鍑芥暟榪樻槸鍝釜媧劇敓綾葷殑鍑芥暟錛屾墍浠ヨ鎴愪負(fù)“铏?#8221;鍑芥暟銆?/p> <p>铏氬嚱鏁板彧鑳藉熷姪浜庢寚閽堟垨鑰呭紩鐢ㄦ潵杈懼埌澶氭佺殑鏁堟灉錛屽鏋滄槸涓嬮潰榪欐牱鐨勪唬鐮侊紝鍒欒櫧鐒舵槸铏氬嚱鏁幫紝浣嗗畠涓嶆槸澶氭佺殑錛?br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void foo();<br>};<br>class B: public A<br>{<br> <wbr> <wbr> <wbr> virtual void foo();<br>};<br>void bar()<br>{<br> <wbr> <wbr> <wbr> A a;<br> <wbr> <wbr> <wbr> a.foo(); // A::foo()琚皟鐢?br>}</p> <p> <wbr></p> <p><strong>1.1</strong> <strong>澶氭?/strong></p> <p>鍦ㄤ簡(jiǎn)瑙d簡(jiǎn)铏氬嚱鏁扮殑鎰忔濅箣鍚庯紝鍐嶈冭檻浠涔堟槸澶氭佸氨寰堝鏄撲簡(jiǎn)銆備粛鐒墮拡瀵逛笂闈㈢殑綾誨眰嬈★紝浣嗘槸浣跨敤鐨勬柟娉曞彉鐨勫鏉備簡(jiǎn)涓浜涳細(xì)<br>void bar(A *a)<br>{<br> <wbr> <wbr> <wbr> a->foo(); // 琚皟鐢ㄧ殑鏄疉::foo() 榪樻槸B::foo()錛?br>}</p> <p>鍥犱負(fù)foo()鏄釜铏氬嚱鏁幫紝鎵浠ュ湪bar榪欎釜鍑芥暟涓紝鍙牴鎹繖孌典唬鐮侊紝鏃犱粠紜畾榪欓噷琚皟鐢ㄧ殑鏄疉::foo()榪樻槸B::foo()錛屼絾鏄彲浠ヨ偗瀹氱殑璇達(dá)細(xì)濡傛灉a鎸囧悜鐨勬槸A綾葷殑瀹炰緥錛屽垯A::foo()琚皟鐢紝濡傛灉a鎸囧悜鐨勬槸B綾葷殑瀹炰緥錛屽垯B::foo()琚皟鐢ㄣ?/p> <p>榪欑鍚屼竴浠g爜鍙互浜х敓涓嶅悓鏁堟灉鐨勭壒鐐癸紝琚О涓?#8220;澶氭?#8221;銆?/p> <p> <wbr></p> <p><strong>1.2</strong> <strong>澶氭佹湁浠涔堢敤錛?/strong><br>銆銆澶氭佽繖涔堢濂囷紝浣嗘槸鑳界敤鏉ュ仛浠涔堝憿錛熻繖涓懡棰樻垜闅句互鐢ㄤ竴涓ゅ彞璇濇鎷紝涓鑸殑C++鏁欑▼錛堟垨鑰呭叾瀹冮潰鍚戝璞¤璦鐨勬暀紼嬶級(jí)閮界敤涓涓敾鍥劇殑渚嬪瓙鏉ュ睍紺哄鎬佺殑鐢ㄩ旓紝鎴戝氨涓嶅啀閲嶅榪欎釜渚嬪瓙浜?jiǎn)锛屽鏋滀綘涓嶇煡閬摌q欎釜渚嬪瓙錛岄殢渚挎壘鏈功搴旇閮芥湁浠嬬粛銆傛垜璇曞浘浠庝竴涓娊璞$殑瑙掑害鎻忚堪涓涓嬶紝鍥炲ご鍐嶇粨鍚堥偅涓敾鍥劇殑渚嬪瓙錛屼篃璁鎬綘灝辨洿瀹規(guī)槗鐞嗚В銆?/p> <p>鍦ㄩ潰鍚戝璞$殑緙栫▼涓紝棣栧厛浼?xì)閽堝?guī)暟鎹繘琛屾娊璞★紙紜畾鍩虹被錛夊拰緇ф壙錛堢‘瀹氭淳鐢熺被錛夛紝鏋勬垚綾誨眰嬈°傝繖涓被灞傛鐨勪嬌鐢ㄨ呭湪浣跨敤瀹冧滑鐨勬椂鍊欙紝濡傛灉浠嶇劧鍦ㄩ渶瑕佸熀綾葷殑鏃跺欏啓閽堝鍩虹被鐨勪唬鐮侊紝鍦ㄩ渶瑕佹淳鐢熺被鐨勬椂鍊欏啓閽堝媧劇敓綾葷殑浠g爜錛屽氨絳変簬綾誨眰嬈″畬鍏ㄦ毚闇插湪浣跨敤鑰呴潰鍓嶃傚鏋滆繖涓被灞傛鏈変換浣曠殑鏀瑰彉錛堝鍔犱簡(jiǎn)鏂扮被錛夛紝閮介渶瑕佷嬌鐢ㄨ?#8220;鐭ラ亾”錛堥拡瀵規(guī)柊綾誨啓浠g爜錛夈傝繖鏍峰氨澧炲姞浜?jiǎn)绫诲眰娆′笌鍏朵娇鐢ㄨ呬箣闂寸殑鑰﹀悎錛屾湁浜烘妸榪欑鎯呭喌鍒椾負(fù)紼嬪簭涓殑“bad smell”涔嬩竴銆?/p> <p>澶氭佸彲浠ヤ嬌紼嬪簭鍛樿劚紱昏繖縐嶇獦澧冦傚啀鍥炲ご鐪嬬湅1.1涓殑渚嬪瓙錛宐ar()浣滀負(fù)A-B榪欎釜綾誨眰嬈$殑浣跨敤鑰咃紝瀹冨茍涓嶇煡閬撹繖涓被灞傛涓湁澶氬皯涓被錛屾瘡涓被閮藉彨浠涔堬紝浣嗘槸涓鏍峰彲浠ュ緢濂界殑宸ヤ綔錛屽綋鏈変竴涓狢綾諱粠A綾繪淳鐢熷嚭鏉ュ悗錛宐ar()涔熶笉闇瑕?#8220;鐭ラ亾”錛堜慨鏀癸級(jí)銆傝繖瀹屽叏褰掑姛浜庡鎬?-緙栬瘧鍣ㄩ拡瀵硅櫄鍑芥暟浜х敓浜?jiǎn)鍙互鍦q愯鏃跺埢紜畾琚皟鐢ㄥ嚱鏁扮殑浠g爜銆?/p> <p> <wbr></p> <p><strong>1.3</strong> <strong>濡備綍</strong><strong>“</strong><strong>鍔ㄦ佽仈緙?/strong><strong>”</strong><br>銆銆緙栬瘧鍣ㄦ槸濡備綍閽堝铏氬嚱鏁頒駭鐢熷彲浠ュ啀榪愯鏃跺埢紜畾琚皟鐢ㄥ嚱鏁扮殑浠g爜鍛紵涔熷氨鏄錛岃櫄鍑芥暟瀹為檯涓婃槸濡備綍琚紪璇戝櫒澶勭悊鐨勫憿錛烲ippman鍦ㄦ繁搴︽帰绱++瀵硅薄妯″瀷[1]涓殑涓嶅悓绔犺妭璁插埌浜?jiǎn)鍑牽U嶆柟寮忥紝榪欓噷鎶?#8220;鏍囧噯鐨?#8221;鏂瑰紡綆鍗曚粙緇嶄竴涓嬨?/p> <p>鎴戞墍璇寸殑“鏍囧噯”鏂瑰紡錛屼篃灝辨槸鎵璋撶殑“VTABLE”鏈哄埗銆傜紪璇戝櫒鍙戠幇涓涓被涓湁琚0鏄庝負(fù)virtual鐨勫嚱鏁幫紝灝變細(xì)涓哄叾鎼炰竴涓櫄鍑芥暟琛紝涔熷氨鏄?VTABLE銆俈TABLE瀹為檯涓婃槸涓涓嚱鏁版寚閽堢殑鏁扮粍錛屾瘡涓櫄鍑芥暟鍗犵敤榪欎釜鏁扮粍鐨勪竴涓猻lot銆備竴涓被鍙湁涓涓猇TABLE錛屼笉綆″畠鏈夊灝戜釜瀹炰緥銆傛淳鐢熺被鏈夎嚜宸辯殑VTABLE錛屼絾鏄淳鐢熺被鐨刅TABLE涓庡熀綾葷殑VTABLE鏈夌浉鍚岀殑鍑芥暟鎺掑垪欏哄簭錛屽悓鍚嶇殑铏氬嚱鏁拌鏀懼湪涓や釜鏁扮粍鐨勭浉鍚屼綅緗笂銆傚湪鍒涘緩綾誨疄渚嬬殑鏃跺欙紝緙栬瘧鍣ㄨ繕浼?xì)鍦ㄦ瘡涓疄渚嬬殑鍐呭瓨甯冨眬涓鍔犱竴涓獀ptr瀛楁錛岃瀛楁鎸囧悜鏈被鐨刅TABLE銆傞氳繃榪欎簺鎵嬫錛岀紪璇戝櫒鍦ㄧ湅鍒頒竴涓櫄鍑芥暟璋冪敤鐨勬椂鍊欙紝灝變細(xì)灝嗚繖涓皟鐢ㄦ敼鍐欙紝閽堝1.1涓殑渚嬪瓙錛?br>void bar(A * a)<br>{<br> <wbr> <wbr> <wbr> a->foo();<br>}<br>浼?xì)琚敼鍐欎负锛?xì)<br>void bar(A * a)<br>{<br> <wbr> <wbr> <wbr> (a->vptr[1])();<br>}</p> <p>鍥犱負(fù)媧劇敓綾誨拰鍩虹被鐨刦oo()鍑芥暟鍏鋒湁鐩稿悓鐨刅TABLE绱㈠紩錛岃屼粬浠殑vptr鍙堟寚鍚戜笉鍚岀殑VTABLE錛屽洜姝ら氳繃榪欐牱鐨勬柟娉曞彲浠ュ湪榪愯鏃跺埢鍐沖畾璋冪敤鍝釜foo()鍑芥暟銆?/p> <p>铏界劧瀹為檯鎯呭喌榪滈潪榪欎箞綆鍗曪紝浣嗘槸鍩烘湰鍘熺悊澶ц嚧濡傛銆?/p> <p> <wbr></p> <p><strong>1.4 overload</strong><strong>鍜?/strong><strong>override</strong></p> <p>铏氬嚱鏁版繪槸鍦ㄦ淳鐢熺被涓鏀瑰啓錛岃繖縐嶆敼鍐欒縐頒負(fù)“override”銆傛垜緇忓父娣鋒穯“overload”鍜?#8220;override”榪欎袱涓崟璇嶃備絾鏄殢鐫鍚勭被C++鐨勪功瓚婃潵瓚婂錛屽悗鏉ョ殑紼嬪簭鍛樹篃璁鎬笉浼?xì)鍐嶇姱鎴戠姱杩囩殑閿欒浜?jiǎn)銆備絾鏄垜鎵撶畻婢勬竻涓涓嬶細(xì)</p> <p>override鏄寚媧劇敓綾婚噸鍐欏熀綾葷殑铏氬嚱鏁幫紝灝辮薄鎴戜滑鍓嶉潰B綾諱腑閲嶅啓浜?jiǎn)A綾諱腑鐨刦oo()鍑芥暟銆傞噸鍐欑殑鍑芥暟蹇呴』鏈変竴鑷寸殑鍙傛暟琛ㄥ拰榪斿洖鍊鹼紙C++鏍囧噯鍏佽榪斿洖鍊間笉鍚岀殑鎯呭喌錛岃繖涓垜浼?xì)鍦?#8220;璇硶”閮ㄥ垎綆鍗曚粙緇嶏紝浣嗘槸寰堝皯緙栬瘧鍣ㄦ敮鎸佽繖涓猣eature錛夈傝繖涓崟璇嶅ソ璞′竴鐩存病鏈変粈涔堝悎閫傜殑涓枃璇嶆眹鏉ュ搴旓紝鏈変漢璇戜負(fù)“瑕嗙洊”錛岃繕璐村垏涓浜涖?br>overload綰﹀畾鎴愪織鐨勮緲昏瘧涓?#8220;閲嶈澆”銆傛槸鎸囩紪鍐欎竴涓笌宸叉湁鍑芥暟鍚屽悕浣嗘槸鍙傛暟琛ㄤ笉鍚岀殑鍑芥暟銆備緥濡備竴涓嚱鏁板嵆鍙互鎺ュ彈鏁村瀷鏁頒綔涓哄弬鏁幫紝涔熷彲浠ユ帴鍙楁誕鐐規(guī)暟浣滀負(fù)鍙傛暟銆?/p> <p> <wbr></p> <p><strong>浜?/strong><strong>.</strong> <strong>铏氬嚱鏁扮殑璇硶</strong><br>銆銆铏氬嚱鏁扮殑鏍囧織鏄?#8220;virtual”鍏抽敭瀛椼?/p> <p> <wbr></p> <p><strong>2.1</strong> <strong>浣跨敤</strong><strong>virtual</strong><strong>鍏抽敭瀛?/strong></p> <p>鑰冭檻涓嬮潰鐨勭被灞傛錛?br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void foo();<br>};<br><br>class B: public A<br>{<br>public:<br> <wbr> <wbr> <wbr> void foo(); // 娌℃湁virtual鍏抽敭瀛?<br>};<br><br>class C: public B // 浠嶣緇ф壙錛屼笉鏄粠A緇ф壙錛?br>{<br>public:<br> <wbr> <wbr> <wbr> void foo(); // 涔熸病鏈塿irtual鍏抽敭瀛楋紒<br>};</p> <p>榪欑鎯呭喌涓嬶紝B::foo()鏄櫄鍑芥暟錛孋::foo()涔熷悓鏍鋒槸铏氬嚱鏁般傚洜姝わ紝鍙互璇達(dá)紝鍩虹被澹版槑鐨勮櫄鍑芥暟錛屽湪媧劇敓綾諱腑涔熸槸铏氬嚱鏁幫紝鍗充嬌涓嶅啀浣跨敤virtual鍏抽敭瀛椼?/p> <p> <wbr></p> <p><strong>2.2</strong> <strong>綰櫄鍑芥暟</strong><br>銆銆濡備笅澹版槑琛ㄧず涓涓嚱鏁頒負(fù)綰櫄鍑芥暟錛?br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void foo()=0; // =0鏍囧織涓涓櫄鍑芥暟涓虹函铏氬嚱鏁?br>};</p> <p>涓涓嚱鏁板0鏄庝負(fù)綰櫄鍚庯紝綰櫄鍑芥暟鐨勬剰鎬濇槸錛氭垜鏄竴涓娊璞$被錛佷笉瑕佹妸鎴戝疄渚嬪寲錛佺函铏氬嚱鏁扮敤鏉ヨ鑼冩淳鐢熺被鐨勮涓猴紝瀹為檯涓婂氨鏄墍璋撶殑“鎺ュ彛”銆傚畠鍛婅瘔浣跨敤鑰咃紝鎴戠殑媧劇敓綾婚兘浼?xì)鏈墭q欎釜鍑芥暟銆?/p> <p> <wbr></p> <p><strong>2.3</strong> <strong>铏氭瀽鏋勫嚱鏁?/strong><br>銆銆鏋愭瀯鍑芥暟涔熷彲浠ユ槸铏氱殑錛岀敋鑷蟲槸綰櫄鐨勩備緥濡傦細(xì)<br>class A<br>{<br>public:<br>virtual ~A()=0; // 綰櫄鏋愭瀯鍑芥暟<br>};</p> <p>褰撲竴涓被鎵撶畻琚敤浣滃叾瀹冪被鐨勫熀綾繪椂錛屽畠鐨勬瀽鏋勫嚱鏁板繀欏繪槸铏氱殑銆傝冭檻涓嬮潰鐨勪緥瀛愶細(xì)<br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> A() { ptra_ = new char[10];}<br> <wbr> <wbr> <wbr> ~A() { delete[] ptra_;} // 闈炶櫄鏋愭瀯鍑芥暟<br>private:<br> <wbr> <wbr> <wbr> char * ptra_;<br>};<br>class B: public A<br>{<br>public:<br> <wbr> <wbr> <wbr> B() { ptrb_ = new char[20];}<br> <wbr> <wbr> <wbr> ~B() { delete[] ptrb_;}<br>private:<br> <wbr> <wbr> <wbr> char * ptrb_;<br>};<br>void foo()<br>{<br> <wbr> <wbr> <wbr> A * a = new B;<br> <wbr> <wbr> <wbr> delete a;<br>}</p> <p>鍦ㄨ繖涓緥瀛愪腑錛岀▼搴忎篃璁鎬笉浼?xì)璞′綘鎯宠薄鐨勯偅鏍窐q愯錛屽湪鎵цdelete a鐨勬椂鍊欙紝瀹為檯涓婂彧鏈堿::~A()琚皟鐢ㄤ簡(jiǎn)錛岃孊綾葷殑鏋愭瀯鍑芥暟騫舵病鏈夎璋冪敤錛佽繖鏄惁鏈夌偣鍎垮彲鎬曪紵</p> <p>濡傛灉灝嗕笂闈::~A()鏀逛負(fù)virtual錛屽氨鍙互淇濊瘉B::~B()涔熷湪delete a鐨勬椂鍊欒璋冪敤浜?jiǎn)銆傚洜姝ゅ熀綾葷殑鏋愭瀯鍑芥暟閮藉繀欏繪槸virtual鐨勩?/p> <p>綰櫄鐨勬瀽鏋勫嚱鏁板茍娌℃湁浠涔堜綔鐢紝鏄櫄鐨勫氨澶熶簡(jiǎn)銆傞氬父鍙湁鍦ㄥ笇鏈涘皢涓涓被鍙樻垚鎶借薄綾伙紙涓嶈兘瀹炰緥鍖栫殑綾伙級(jí)錛岃岃繖涓被鍙堟病鏈夊悎閫傜殑鍑芥暟鍙互琚函铏氬寲鐨勬椂鍊欙紝鍙互浣跨敤綰櫄鐨勬瀽鏋勫嚱鏁版潵杈懼埌鐩殑銆?/p> <p> <wbr></p> <p><strong>2.4</strong> <strong>铏氭瀯閫犲嚱鏁幫紵</strong><br>銆銆鏋勯犲嚱鏁頒笉鑳芥槸铏氱殑銆?/p> <p> <wbr></p> <p><strong>涓?/strong><strong>.</strong> <strong>铏氬嚱鏁頒嬌鐢ㄦ妧宸?/strong></p> <p><strong>3.1 private</strong><strong>鐨勮櫄鍑芥暟</strong></p> <p>鑰冭檻涓嬮潰鐨勪緥瀛愶細(xì)<br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> void foo() { bar();}<br>private:<br> <wbr> <wbr> <wbr> virtual void bar() { ...}<br>};<br>class B: public A<br>{<br>private:<br> <wbr> <wbr> <wbr> virtual void bar() { ...}<br>};</p> <p>鍦ㄨ繖涓緥瀛愪腑錛岃櫧鐒禸ar()鍦ˋ綾諱腑鏄痯rivate鐨勶紝浣嗘槸浠嶇劧鍙互鍑虹幇鍦ㄦ淳鐢熺被涓紝騫朵粛鐒跺彲浠ヤ笌public鎴栬卲rotected鐨勮櫄鍑芥暟涓鏍蜂駭鐢熷鎬佺殑鏁堟灉銆傚茍涓嶄細(xì)鍥犱負(fù)瀹冩槸private鐨勶紝灝卞彂鐢烝::foo()涓嶈兘璁塊棶B::bar()鐨勬儏鍐碉紝涔熶笉浼?xì)鍙戠敓B::bar()瀵笰::bar ()鐨刼verride涓嶈搗浣滅敤鐨勬儏鍐點(diǎn)?/p> <p>榪欑鍐欐硶鐨勮鎰忔槸錛欰鍛婅瘔B錛屼綘鏈濂給verride鎴戠殑bar()鍑芥暟錛屼絾鏄綘涓嶈綆″畠濡備綍浣跨敤錛屼篃涓嶈鑷繁璋冪敤榪欎釜鍑芥暟銆?/p> <p> <wbr></p> <p><strong>3.2</strong> <strong>鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟涓殑铏氬嚱鏁拌皟鐢?/strong></p> <p>涓涓被鐨勮櫄鍑芥暟鍦ㄥ畠鑷繁鐨勬瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟涓璋冪敤鐨勬椂鍊欙紝瀹冧滑灝卞彉鎴愭櫘閫氬嚱鏁頒簡(jiǎn)錛屼笉“铏?#8221;浜?jiǎn)銆備篃灝辨槸璇翠笉鑳藉湪鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟涓鑷繁“澶氭?#8221;銆備緥濡傦細(xì)<br>class A<br>{<br>public:<br> <wbr> <wbr> <wbr> A() { foo();} // 鍦ㄨ繖閲岋紝鏃犺濡備綍閮芥槸A::foo()琚皟鐢紒<br> <wbr> <wbr> <wbr> ~A() { foo();} // 鍚屼笂<br> <wbr> <wbr> <wbr> virtual void foo();<br>};<br>class B: public A<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void foo();<br>};<br>void bar()<br>{<br> <wbr> <wbr> <wbr> A * a = new B;<br> <wbr> <wbr> <wbr> delete a;<br>}</p> <p>濡傛灉浣犲笇鏈沝elete a鐨勬椂鍊欙紝浼?xì)瀵艰嚧B::foo()琚皟鐢紝閭d箞浣犲氨閿欎簡(jiǎn)銆傚悓鏍鳳紝鍦╪ew B鐨勬椂鍊欙紝A鐨勬瀯閫犲嚱鏁拌璋冪敤錛屼絾鏄湪A鐨勬瀯閫犲嚱鏁頒腑錛岃璋冪敤鐨勬槸A::foo()鑰屼笉鏄疊::foo()銆?/p> <p> <wbr></p> <p><strong>3.4</strong> <strong>浠涔堟椂鍊欎嬌鐢ㄨ櫄鍑芥暟</strong></p> <p>鍦ㄤ綘璁捐涓涓熀綾葷殑鏃跺欙紝濡傛灉鍙戠幇涓涓嚱鏁伴渶瑕佸湪媧劇敓綾婚噷鏈変笉鍚岀殑琛ㄧ幇錛岄偅涔堝畠?yōu)搴旇鏄櫄鐨勩備粠璁捐鐨勮搴﹁錛屽嚭鐜板湪鍩虹被涓殑铏氬嚱鏁版槸鎺ュ彛錛屽嚭鐜板湪媧劇敓綾諱腑鐨勮櫄鍑芥暟鏄帴鍙g殑鍏蜂綋瀹炵幇銆傞氳繃榪欐牱鐨勬柟娉曪紝灝卞彲浠ュ皢瀵硅薄鐨勮涓烘娊璞″寲銆?/p> <p>浠ヨ璁℃ā寮廩2]涓璅actory Method妯″紡涓轟緥錛孋reator鐨刦actoryMethod()灝辨槸铏氬嚱鏁幫紝媧劇敓綾籵verride榪欎釜鍑芥暟鍚庯紝浜х敓涓嶅悓鐨凱roduct綾伙紝浜х敓鐨凱roduct綾昏鍩虹被鐨凙nOperation()鍑芥暟浣跨敤銆傚熀綾葷殑AnOperation()鍑芥暟閽堝Product綾昏繘琛屾搷浣滐紝褰撶劧 Product綾諱竴瀹氫篃鏈夊鎬侊紙铏氬嚱鏁幫級(jí)銆?/p> <p>鍙﹀涓涓緥瀛愬氨鏄泦鍚堟搷浣滐紝鍋囪浣犳湁涓涓互A綾諱負(fù)鍩虹被鐨勭被灞傛錛屽張鐢ㄤ簡(jiǎn)涓涓猻td:: vector鏉ヤ繚瀛樿繖涓被灞傛涓笉鍚岀被鐨勫疄渚嬫寚閽堬紝閭d箞浣犱竴瀹氬笇鏈涘湪瀵硅繖涓泦鍚堜腑鐨勭被榪涜鎿嶄綔鐨勬椂鍊欙紝涓嶈鎶婃瘡涓寚閽堝啀cast鍥炲埌瀹冨師鏉ョ殑綾誨瀷錛堟淳鐢熺被錛夛紝鑰屾槸甯屾湜瀵逛粬浠繘琛屽悓鏍風(fēng)殑鎿嶄綔銆傞偅涔堝氨搴旇灝嗚繖涓?#8220;涓鏍風(fēng)殑鎿嶄綔”澹版槑涓簐irtual銆?/p> <p>鐜板疄涓紝榪滀笉鍙垜涓劇殑榪欎袱涓緥瀛愶紝浣嗘槸澶х殑鍘熷垯閮芥槸鎴戝墠闈㈣鍒扮殑“濡傛灉鍙戠幇涓涓嚱鏁伴渶瑕佸湪媧劇敓綾婚噷鏈変笉鍚岀殑琛ㄧ幇錛岄偅涔堝畠?yōu)搴旇鏄櫄鐨?#8221;銆傝繖鍙ヨ瘽涔熷彲浠ュ弽榪囨潵璇達(dá)細(xì)“濡傛灉浣犲彂鐜板熀綾繪彁渚涗簡(jiǎn)铏氬嚱鏁幫紝閭d箞浣犳渶濂給verride瀹?#8221;銆?/p> <p> <wbr></p> <p><strong>闄勶細(xì)</strong><strong>C++</strong><strong>涓殑铏氬嚱鏁板拰綰櫄鍑芥暟鐢ㄦ硶</strong></p> <p>1.铏氬嚱鏁板拰綰櫄鍑芥暟鍙互瀹氫箟鍦ㄥ悓涓涓被(class)涓紝鍚湁綰櫄鍑芥暟鐨勭被琚О涓烘娊璞$被錛坅bstract class錛夛紝鑰屽彧鍚湁铏氬嚱鏁扮殑綾伙紙class錛変笉鑳借縐頒負(fù)鎶借薄綾伙紙abstract class錛夈?/p> <p>2.铏氬嚱鏁板彲浠ヨ鐩存帴浣跨敤錛屼篃鍙互琚瓙綾伙紙sub class錛夐噸杞戒互鍚庝互澶氭佺殑褰㈠紡璋冪敤錛岃岀函铏氬嚱鏁板繀欏誨湪瀛愮被錛坰ub class錛変腑瀹炵幇璇ュ嚱鏁版墠鍙互浣跨敤錛屽洜涓虹函铏氬嚱鏁板湪鍩虹被錛坆ase class錛?br>鍙湁澹版槑鑰屾病鏈夊畾涔夈?/p> <p>3.铏氬嚱鏁板拰綰櫄鍑芥暟閮藉彲浠ュ湪瀛愮被錛坰ub class錛変腑琚噸杞斤紝浠ュ鎬佺殑褰㈠紡琚皟鐢ㄣ?/p> <p>4.铏氬嚱鏁板拰綰櫄鍑芥暟閫氬父瀛樺湪浜庢娊璞″熀綾伙紙abstract base class -ABC錛変箣涓紝琚戶鎵跨殑瀛愮被閲嶈澆錛岀洰鐨勬槸鎻愪緵涓涓粺涓鐨勬帴鍙c?/p> <p>5.铏氬嚱鏁扮殑瀹氫箟褰㈠紡錛歷irtual {method body} 錛涚函铏氬嚱鏁扮殑瀹氫箟褰㈠紡錛歷irtual { } = 0; 鍦ㄨ櫄鍑芥暟鍜岀函铏氬嚱鏁扮殑瀹氫箟涓笉鑳芥湁static鏍囪瘑絎︼紝鍘熷洜寰堢畝鍗曪紝琚玸tatic淇グ鐨勫嚱鏁板湪緙栬瘧鏃跺欒姹傚墠鏈焍ind,鐒惰岃櫄鍑芥暟鍗存槸鍔ㄦ佺粦瀹氾紙run-time bind錛夛紝鑰屼笖琚袱鑰呬慨楗扮殑鍑芥暟鐢熷懡鍛ㄦ湡錛坙ife recycle錛変篃涓嶄竴鏍楓?/p> <p>6.濡傛灉涓涓被涓惈鏈夌函铏氬嚱鏁幫紝閭d箞浠諱綍璇曞浘瀵硅綾昏繘琛屽疄渚嬪寲鐨勮鍙ラ兘灝嗗鑷撮敊璇殑浜х敓錛屽洜涓烘娊璞″熀綾伙紙ABC錛夋槸涓嶈兘琚洿鎺ヨ皟鐢ㄧ殑銆傚繀欏昏瀛愮被緇ф壙閲嶈澆浠ュ悗錛屾牴鎹姹傝皟鐢ㄥ叾瀛愮被鐨勬柟娉曘?/p> <p>浠ヤ笅涓轟竴涓畝鍗曠殑铏氬嚱鏁板拰綰櫄瀵掓暟鐨勪嬌鐢ㄦ紨紺猴紝鐩殑鏄姏鐮栧紩鐜夛紒<br>//father class<br>class Virtualbase<br>{<br>public:<br> <wbr> <wbr> <wbr> virtual void Demon()= 0; //prue virtual function<br> <wbr> <wbr> <wbr> virtual void Base() {cout<<"this is farther class"<};<br>};<br>//sub class<br>class SubVirtual :public Virtualbase<br>{<br>public:<br> <wbr> <wbr> <wbr> void Demon() { cout<<" this is SubVirtual!"<<endl;}</p> <p>void Base() {cout<<"this is subclass Base"<<endl;}<br>};<br><br>void main()<br>{<br> <wbr> <wbr> <wbr> Virtualbase* inst = new SubVirtual(); //multstate pointer<br> <wbr> <wbr> <wbr> inst->Demon();<br> <wbr> <wbr> <wbr> inst->Base();<br> <wbr> <wbr> <wbr> // inst = new Virtualbase();<br> <wbr> <wbr> <wbr> // inst->Base()<br> <wbr> <wbr> <wbr> return ;<br>}</p> <p>----------------------------------------------------------------------------------------------</p> <p> <wbr></p> <p> <wbr> <wbr> <wbr> 铏氬嚱鏁版槸鍦ㄧ被涓澹版槑涓簐irtual鐨勬垚鍛樺嚱鏁幫紝褰撶紪璇戝櫒鐪嬪埌閫氳繃鎸囬拡鎴栧紩鐢ㄨ皟鐢ㄦ綾誨嚱鏁版椂錛屽鍏舵墽琛屾櫄緇戝畾錛屽嵆閫氳繃鎸囬拡錛堟垨寮曠敤錛夋寚鍚戠殑綾葷殑綾誨瀷淇℃伅鏉ュ喅瀹氳鍑芥暟鏄摢涓被鐨勩傞氬父姝ょ被鎸囬拡鎴栧紩鐢ㄩ兘澹版槑涓哄熀綾葷殑錛屽畠鍙互鎸囧悜鍩虹被鎴栨淳鐢熺被鐨勫璞°傚鎬佹寚鍚屼竴涓柟娉曟牴鎹叾鎵灞炵殑涓嶅悓瀵硅薄鍙互鏈変笉鍚岀殑琛屼負(fù)銆?/p> <p>鏃╃粦瀹氭寚緙栬瘧鍣ㄥ湪緙栬瘧鏈熼棿鍗崇煡閬撳璞$殑鍏蜂綋綾誨瀷騫剁‘瀹氭瀵硅薄璋冪敤鎴愬憳鍑芥暟鐨勭‘鍒囧湴鍧錛涜屾櫄緇戝畾鏄牴鎹寚閽堟墍鎸囧璞$殑綾誨瀷淇℃伅寰楀埌綾葷殑铏氬嚱鏁拌〃鎸囬拡榪涜岀‘瀹氳皟鐢ㄦ垚鍛樺嚱鏁扮殑紜垏鍦板潃銆?/p> <p>緙栬瘧鍣ㄥ姣忎釜鍖呭惈铏氬嚱鏁扮殑綾誨垱寤轟竴涓〃錛堢О涓簐table錛夈傚湪vtable涓紝緙栬瘧鍣ㄦ斁緗壒瀹氱被鐨勮櫄鍑芥暟鍦板潃銆傚湪姣忎釜甯︽湁铏氬嚱鏁扮殑綾諱腑錛岀紪璇戝櫒縐樺瘑鍦扮疆涓鎸囬拡錛岀О涓簐pointer錛堢緝鍐欎負(fù)vptr錛夛紝鎸囧悜榪欎釜瀵硅薄鐨剉table銆傞氳繃鍩虹被鎸囬拡鍋氳櫄鍑芥暟璋冪敤鏃訛紙涔熷氨鏄仛澶氭佽皟鐢ㄦ椂錛夛紝緙栬瘧鍣ㄩ潤(rùn)鎬佸湴鎻掑叆鍙栧緱榪欎釜vptr錛屽茍vtable琛ㄤ腑鏌ユ壘鍑芥暟鍦板潃鐨勪唬鐮侊紝榪欐牱灝辮兘璋冪敤姝g‘鐨勫嚱鏁頒嬌鏅氭崋緇戝彂鐢熴備負(fù)姣忎釜綾昏緗畍table銆佸垵濮嬪寲vptr銆佷負(fù)铏氬嚱鏁拌皟鐢ㄦ彃鍏ヤ唬鐮侊紝鎵鏈夎繖浜涢兘鏄嚜鍔ㄥ彂鐢熺殑錛屾墍浠ユ垜浠笉蹇呮媴蹇?jī)杩欎簺銆傚埄鐢ㄨ櫄鍑芥暟錛岃繖涓璞$殑鍚堥傜殑鍑芥暟灝辮兘琚皟鐢紝鍝曞湪緙栬瘧鍣ㄨ繕涓嶇煡閬撹繖涓璞$殑鐗瑰畾綾誨瀷鐨勬儏鍐典笅銆?/p> <p>鍦ㄤ換浣曠被涓笉瀛樺湪鏄劇ず鐨勭被鍨嬩俊鎭紝鍙璞′腑蹇呴』瀛樻斁綾諱俊鎭紝鍚﹀垯綾誨瀷涓嶅彲鑳藉湪榪愯鏃跺緩绔嬨傞偅榪欎釜綾諱俊鎭槸浠涔堝憿錛熸垜浠潵鐪嬩笅闈㈠嚑涓被錛?/p> <p>class <wbr>no_virtual<br>{<br>public:<br> <wbr> <wbr> <wbr> <wbr>void <wbr>fun1() <wbr>const{}<br> <wbr> <wbr> <wbr> <wbr>int <wbr> <wbr>fun2() <wbr>const <wbr>{ <wbr>return <wbr>a; <wbr>}<br>private:<br> <wbr> <wbr> <wbr> <wbr>int <wbr>a;<br>}</p> <p>class <wbr>one_virtual<br>{<br>public:<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>void <wbr>fun1() <wbr>const{}<br> <wbr> <wbr> <wbr> <wbr>int <wbr> <wbr>fun2() <wbr>const <wbr>{ <wbr>return <wbr>a; <wbr>}<br>private:<br> <wbr> <wbr> <wbr> <wbr>int <wbr>a;<br>}</p> <p>class <wbr>two_virtual<br>{<br>public:<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>void <wbr>fun1() <wbr>const{}<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>int <wbr> <wbr>fun2() <wbr>const <wbr>{ <wbr>return <wbr>a; <wbr>}<br>private:<br> <wbr> <wbr> <wbr> <wbr>int <wbr>a;<br>}</p> <p>浠ヤ笂涓変釜綾諱腑錛?br>no_virtual娌℃湁铏氬嚱鏁幫紝sizeof(no_virtual)=4錛岀被no_virtual鐨勯暱搴﹀氨鏄叾鎴愬憳鍙橀噺鏁村瀷a鐨勯暱搴︼紱<br>one_virtual鏈変竴涓櫄鍑芥暟錛宻izeof(one_virtual)=8錛?br>two_virtual鏈変袱涓櫄鍑芥暟錛宻izeof(two_virtual)=8錛?nbsp;<wbr>鏈変竴涓櫄鍑芥暟鍜屼袱涓櫄鍑芥暟鐨勭被鐨勯暱搴︽病鏈夊尯鍒紝鍏跺疄瀹冧滑鐨勯暱搴﹀氨鏄痭o_virtual鐨勯暱搴﹀姞涓涓獀oid鎸囬拡鐨勯暱搴︼紝瀹冨弽鏄犲嚭錛屽鏋滄湁涓涓垨澶氫釜铏氬嚱鏁幫紝緙栬瘧鍣ㄥ湪榪欎釜緇撴瀯涓彃鍏ヤ竴涓寚閽堬紙 <wbr>vptr錛夈傚湪one_virtual <wbr>鍜宼wo_virtual涔嬮棿娌℃湁鍖哄埆銆傝繖鏄洜涓簐ptr鎸囧悜涓涓瓨鏀懼湴鍧鐨勮〃錛屽彧闇瑕佷竴涓寚閽堬紝鍥犱負(fù)鎵鏈夎櫄鍑芥暟鍦板潃閮藉寘鍚湪榪欎釜琛ㄤ腑銆傝繖涓猇PTR灝卞彲浠ョ湅浣滅被鐨勭被鍨嬩俊鎭?/p> <p>閭f垜浠潵鐪嬬湅緙栬瘧鍣ㄦ槸鎬庝箞寤虹珛VPTR鎸囧悜鐨勮繖涓櫄鍑芥暟琛ㄧ殑銆傚厛鐪嬩笅闈袱涓被錛?br>class <wbr>base<br>{<br>public:<br> <wbr> <wbr> <wbr> <wbr>void <wbr>bfun(){}<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>void <wbr>vfun1(){}<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>int <wbr>vfun2(){}<br>private:<br> <wbr> <wbr> <wbr> <wbr>int <wbr>a;<br>}<br>class <wbr>derived <wbr>: <wbr>public <wbr>base<br>{<br>public:<br> <wbr> <wbr> <wbr> <wbr>void <wbr>dfun(){}<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>void <wbr>vfun1(){}<br> <wbr> <wbr> <wbr> <wbr>virtual <wbr>int <wbr>vfun3(){}<br>private:<br> <wbr> <wbr> <wbr> <wbr>int <wbr>b;<br>}<br>涓や釜綾籚PTR鎸囧悜鐨勮櫄鍑芥暟琛紙VTABLE錛夊垎鍒涓嬶細(xì)<br>base綾?br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>鈥斺斺斺斺斺?br>VPTR鈥斺?gt; <wbr>|&base::vfun1 <wbr>|<br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>鈥斺斺斺斺斺?br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>|&base::vfun2 <wbr>|<br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>鈥斺斺斺斺斺?br><br>derived綾?br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> 鈥斺斺斺斺斺斺?br>VPTR鈥斺?gt; <wbr>|&derived::vfun1 <wbr>|<br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>鈥斺斺斺斺斺斺?br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>|&base::vfun2 <wbr> <wbr> <wbr> <wbr>|<br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>鈥斺斺斺斺斺斺?br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>|&derived::vfun3 <wbr>|<br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>鈥斺斺斺斺斺斺?/p> <p>姣忓綋鍒涘緩涓涓寘鍚湁铏氬嚱鏁扮殑綾繪垨浠庡寘鍚湁铏氬嚱鏁扮殑綾繪淳鐢熶竴涓被鏃訛紝緙栬瘧鍣ㄥ氨涓鴻繖涓被鍒涘緩涓涓猇TABLE錛屽涓婂浘鎵紺恒傚湪榪欎釜琛ㄤ腑錛岀紪璇戝櫒鏀劇疆浜?jiǎn)鍦q欎釜綾諱腑鎴栧湪瀹冪殑鍩虹被涓墍鏈夊凡澹版槑涓簐irtual鐨勫嚱鏁扮殑鍦板潃銆傚鏋滃湪榪欎釜媧劇敓綾諱腑娌℃湁瀵瑰湪鍩虹被涓0鏄庝負(fù)virtual鐨勫嚱鏁拌繘琛岄噸鏂板畾涔夛紝緙栬瘧鍣ㄥ氨浣跨敤鍩虹被鐨勮繖涓櫄鍑芥暟鍦板潃銆傦紙鍦╠erived鐨刅TABLE涓紝vfun2鐨勫叆鍙e氨鏄繖縐嶆儏鍐點(diǎn)傦級(jí)鐒跺悗緙栬瘧鍣ㄥ湪榪欎釜綾諱腑鏀劇疆VPTR銆傚綋浣跨敤綆鍗曠戶鎵挎椂錛屽浜庢瘡涓璞″彧鏈変竴涓猇PTR銆俈PTR蹇呴』琚垵濮嬪寲涓烘寚鍚戠浉搴旂殑VTABLE錛岃繖鍦ㄦ瀯閫犲嚱鏁頒腑鍙戠敓銆?/p> <p>涓鏃PTR琚垵濮嬪寲涓烘寚鍚戠浉搴旂殑VTABLE錛屽璞″氨"鐭ラ亾"瀹冭嚜宸辨槸浠涔堢被鍨嬨備絾鍙湁褰撹櫄鍑芥暟琚皟鐢ㄦ椂榪欑鑷垜璁ょ煡鎵嶆湁鐢ㄣ?/p> <p>VPTR甯稿父浣嶄簬瀵硅薄鐨勫紑澶達(dá)紝緙栬瘧鍣ㄨ兘寰堝鏄撳湴鍙栧埌VPTR鐨勫鹼紝浠庤岀‘瀹歏TABLE鐨勪綅緗俈PTR鎬繪寚鍚慥TABLE鐨勫紑濮嬪湴鍧錛屾墍鏈夊熀綾誨拰瀹冪殑瀛愮被鐨勮櫄鍑芥暟鍦板潃錛堝瓙綾昏嚜宸卞畾涔夌殑铏氬嚱鏁伴櫎澶栵級(jí)鍦╒TABLE涓瓨鍌ㄧ殑浣嶇疆鎬繪槸鐩稿悓鐨勶紝濡備笂闈ase綾誨拰derived綾葷殑VTABLE涓璿fun1鍜寁fun2鐨勫湴鍧鎬繪槸鎸夌浉鍚岀殑欏哄簭瀛樺偍銆傜紪璇戝櫒鐭ラ亾vfun1浣嶄簬VPTR澶勶紝vfun2浣嶄簬VPTR+1澶勶紝鍥犳鍦ㄧ敤鍩虹被鎸囬拡璋冪敤铏氬嚱鏁版椂錛岀紪璇戝櫒棣栧厛鑾峰彇鎸囬拡鎸囧悜瀵硅薄鐨勭被鍨嬩俊鎭紙VPTR錛夛紝鐒跺悗灝卞幓璋冪敤铏氬嚱鏁般傚涓涓猙ase綾繪寚閽坧Base鎸囧悜浜?jiǎn)涓涓猟erived瀵硅薄錛岄偅pBase->vfun2()琚紪璇戝櫒緲昏瘧涓?nbsp;<wbr>VPTR+1 <wbr>鐨勮皟鐢紝鍥犱負(fù)铏氬嚱鏁皏fun2鐨勫湴鍧鍦╒TABLE涓綅浜庣儲(chǔ)寮曚負(fù)1鐨勪綅緗笂銆傚悓鐞嗭紝pBase->vfun3()琚紪璇戝櫒緲昏瘧涓?nbsp;<wbr>VPTR+2鐨勮皟鐢ㄣ傝繖灝辨槸鎵璋撶殑鏅氱粦瀹氥?/p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:28 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65386.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>澶氶噸緇ф壙錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65385.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:27:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65385.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65385.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65385.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65385.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65385.html</trackback:ping><description><![CDATA[杞澆鍐呭銆傚彟鏈夊叾浠栨洿濂界殑杞澆鍙傝冭祫鏂欙紝鍦ㄥ崥鏂囨渶鏈熬銆?br /><br />    闈㈠悜瀵硅薄緙栫▼璇█涓殑澶氶噸緇ф壙鎸囩殑鏄竴涓被鍒彲浠ュ悓鏃朵粠澶氫簬涓涓埗綾葷戶鎵胯涓轟笌鐗瑰緛鐨勫姛鑳姐備笌鍗曚竴緇ф壙鐩稿錛屽崟涓緇ф壙鎸囦竴涓被鍒彧鍙互緇ф壙鑷竴涓埗綾匯? <div> <wbr> <wbr> <wbr> <wbr>閲嶆俯Java錛屽彂鐜癑ava绔熺劧涓嶆敮鎸佺被澶氶噸緇ф壙錛堢洿鎺ョ戶鎵跨被錛夛紝鍗村厑璁告帴鍙g殑澶氶噸緇ф壙銆傘?/div> <div> <wbr> <wbr> <wbr> <wbr>C++涓被鍙互澶氶噸緇ф壙錛孞ava涓負(fù)浠涔堜笉瀹炵幇榪欎釜鍔熻兘鍛紵澶氶噸緇ф壙浼?xì)甯︽潵鍝簺闂锛屼粠鑰屽鑷碕ava鏀懼純綾葷殑澶氶噸緇ф壙錛?/div> <div> <wbr> <wbr> <wbr> <wbr>鍐嶄竴娣辯┒錛屽彂鐜板騫翠互鏉ワ紝澶氶噸緇ф壙涓鐩存槸涓晱鎰熻瘽棰橈紝璧炴垚鑰呯湅鍒扮殑鏄厤鍘葷鎷欑殑娣峰悎緇ф壙鐨勫埄澶勶紝鍙嶅鑰呯湅鍒扮殑鏄澶勬販娣嗙殑寮婄錛屼緥濡傚彉閲忕殑浜屼箟鎬э紝騫朵笖鏄涓彉閲忋傛墍浠ュ叧浜庡畠鐨勫ソ澶勪笌椋庨櫓涔嬮棿瀛拌交瀛伴噸鎴愪負(fù)OO鐣屽騫翠簤璁虹殑鐒︾偣銆?/div> <div> <wbr> <wbr> <wbr> <wbr>鍏跺疄鏈澶х殑闂鏄嚭鐜版嫇琛ュ浘錛屼篃灝辨槸鍑虹幇閽葷煶鍨嬬戶鎵跨粨鏋勶紙DOD錛夛紝涓漢鎰熻榪欐槸涓嚧鍛戒激銆傛濡傚叾鍚嶏細(xì)Diamond of Death銆?/div> <div> <wbr></div> <div>涓句釜綆鍗曠殑渚嬪瓙錛?/div> <div> <wbr> <wbr> <wbr> <wbr>姣斿涓涓熀綾伙細(xì)鍔ㄧ墿銆傚畠鏈変笁涓淳鐢熺被錛氬摵涔崇被鍔ㄧ墿錛屽崱閫氱被鍔ㄧ墿錛屽疇鐗╋紙紜疄閮藉艦鎴怚SA鍏崇郴錛夈傜幇鍦ㄦ湁涓涓瓙綾葷尗錛屼粠鍏崇郴涓婃帹錛屽畠鍙互緇ф壙鑷摵涔崇被錛屽崱閫氱被錛屽疇鐗╋紝閮界鍚圛SA錛屽鏋滆浣撶幇鎵鏈夌殑鐗規(guī)э紝灝遍渶瑕佸叏閮ㄧ戶鎵匡紝榪欐牱灝卞艦鎴愪簡(jiǎn)澶氶噸緇ф壙錛屽嵈涔熷艦鎴愪簡(jiǎn)DOD錛岃繖鏍蜂互鍚庨棶棰樺氨鍑虹幇浜?jiǎn)锛屼粠鐚埌鍔ㄧ墿鐨劸lф壙鏈変笁鏉¤礬寰勶紝濡傛灉鍝轟鉤綾伙紝鍗¢氱被涓庡疇鐗╃被涓湁鐩稿悓鐨勬垚鍛樺嚱鏁版垨鍙橀噺錛岃繖鏍風(fēng)殑鏁版嵁緇勭粐鏂瑰紡浼?xì)迮炴垚澶氫箟銆?/div> <div> <wbr></div> <div> <wbr> <wbr> <wbr> <wbr>C++鎬庝箞瑙e喅榪欎釜闂鐨勫憿錛熻櫄緇ф壙銆傜粨鏋滃氨鏄笉寰椾笉鐗虹壊涓浜涘唴瀛樺紑閿錛屽洜涓轟竴涓姛鑳借鍦ㄥ澶勮閲嶅啓銆傚茍涓斿嚱鏁拌〃閲岀殑鍑芥暟鎸囬拡蹇呴』璋冩暣錛岃繖鏍峰嵆浣垮彲浠ユ弧瓚沖姛鑳斤紝鍦ㄥ悗鏈熺殑緇存姢涔熷緢澶嶆潅銆?/div> <div> <wbr> <wbr> <wbr> 鎵浠ワ紝Java鎵嶄細(xì)閲囩敤榪欐牱鎶樹腑鐨勬柟娉曪紝紜敓鐢熺殑灝嗙被澶氶噸緇ф壙棰樹簡(jiǎn)鍑哄幓銆?/div> <div> <wbr> <wbr> <wbr> 騫朵笖錛岀綉涓婁篃鏈変笉灝戝緩璁紝瑕佸敖鍙兘閬垮厤澶氶噸緇ф壙錛屼笉鎯滀竴鍒囦唬浠峰幓閬垮厤閽葷煶緇撴瀯錛屼互閬垮厤鍚庢湡涓嶅彲鎸藉洖鐨勫ぇ榪斿伐銆?/div> <div> <wbr></div> <div> <wbr></div> <div> <wbr> <wbr> <wbr> 澶氶噸緇ф壙鐨勬蹇碉細(xì)<span style="color: #ffff00;">C++鍏佽涓轟竴涓淳鐢熺被鎸囧畾澶氫釜鍩虹被錛岃繖鏍風(fēng)殑緇ф壙緇撴瀯琚О鍋氬閲嶇戶鎵?/span><span style="color: #ffff00;">銆?/span></div> <div> <wbr> <wbr> <wbr> 涓句釜渚嬪瓙錛屼氦閫氬伐鍏風(fēng)被鍙互媧劇敓鍑烘苯杞﹀拰鑸硅繛涓瓙綾伙紝浣嗘嫢鏈夋苯杞﹀拰鑸瑰叡鍚岀壒鎬ф按闄嗕袱鐢ㄦ苯杞﹀氨蹇呴』緇ф壙鏉ヨ嚜姹借濺綾諱笌鑸圭被鐨勫叡鍚屽睘鎬с?br />銆銆鐢辨鎴戜滑涓嶉毦鎯沖嚭濡備笅鐨勫浘渚嬩笌浠g爜錛? <p align="center"><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/pic/21cppc01.gif" border="0" /></p> <p>褰撲竴涓淳鐢熺被瑕佷嬌鐢ㄥ閲嶇戶鎵跨殑鏃跺欙紝蹇呴』鍦ㄦ淳鐢熺被鍚嶅拰鍐掑彿涔嬪悗鍒楀嚭鎵鏈夊熀綾葷殑綾誨悕錛屽茍鐢ㄩ楀ソ鍒嗛殧銆傘</p> <p> <wbr></p> <p>//紼嬪簭浣滆?綆″畞 <wbr> <wbr> <wbr><br />//绔欑偣:www.cndev-lab.com <wbr> <wbr> <wbr><br />//鎵鏈夌ǹ浠跺潎鏈夌増鏉?濡傝杞澆,璇峰姟蹇呰憲鍚嶅嚭澶勫拰浣滆?nbsp;<wbr> <wbr> <wbr><br /> <wbr><br />#include <wbr><iostream> <wbr><br />using <wbr>namespace <wbr>std; <wbr><br /> <wbr><br />class <wbr>Vehicle <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Vehicle(int <wbr>weight <wbr>= <wbr>0) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Vehicle::weight <wbr>= <wbr>weight; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>SetWeight(int <wbr>weight) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"閲嶆柊璁劇疆閲嶉噺"<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Vehicle::weight <wbr>= <wbr>weight; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>virtual <wbr>void <wbr>ShowMe() <wbr>= <wbr>0; <wbr><br /> <wbr> <wbr> <wbr> <wbr>protected: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>int <wbr>weight; <wbr><br />}; <wbr><br />class <wbr>Car:public <wbr>Vehicle//姹借濺 <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Car(int <wbr>weight=0,int <wbr>aird=0):Vehicle(weight) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Car::aird <wbr>= <wbr>aird; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMe() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"鎴戞槸姹借濺錛?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr>protected: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>int <wbr>aird; <wbr><br />}; <wbr><br /> <wbr><br />class <wbr>Boat:public <wbr>Vehicle//鑸?nbsp;<wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Boat(int <wbr>weight=0,float <wbr>tonnage=0):Vehicle(weight) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Boat::tonnage <wbr>= <wbr>tonnage; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMe() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"鎴戞槸鑸癸紒"<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr>protected: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>float <wbr>tonnage; <wbr><br />}; <wbr><br /> <wbr><br />class <wbr>AmphibianCar:public <wbr>Car,public <wbr>Boat//姘撮檰涓ょ敤姹借濺,澶氶噸緇ф壙鐨勪綋鐜?nbsp;<wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>AmphibianCar(int <wbr>weight,int <wbr>aird,float <wbr>tonnage) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>:<span style="color: #ffff00;">Vehicle(weight)</span>,Car(weight,aird),Boat(weight,tonnage) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>//<span style="color: #ffff00;">澶氶噸緇ф壙瑕佹敞鎰忚皟鐢ㄥ熀綾繪瀯閫犲嚱鏁?nbsp;</span><wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMe() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"鎴戞槸姘撮檰涓ょ敤姹借濺錛?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br />}; <wbr><br />int <wbr>main() <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>AmphibianCar <wbr>a(4,200,1.35f);//閿欒 <wbr><br /> <wbr> <wbr> <wbr> <wbr>a.SetWeight(3);//閿欒 <wbr><br /> <wbr> <wbr> <wbr> <wbr>system("pause"); <wbr> <wbr><br />}</p> <p>銆銆涓婇潰鐨勪唬鐮佷粠琛ㄩ潰鐪嬶紝鐪嬩笉鍑烘湁鏄庢樉鐨勮娉曢敊璇紝浣嗘槸瀹冩槸涓嶈兘澶熼氳繃緙栬瘧鐨勩傝繖鏈夋槸涓轟粈涔堝憿錛?br />銆銆榪欐槸鐢變簬澶氶噸緇ф壙甯︽潵鐨勭戶鎵跨殑妯$硦鎬у甫鏉ョ殑闂銆?/p> <p> <wbr> <wbr> <wbr> 鍏堢湅濡備笅鐨勫浘紺猴細(xì)</p> <p> <wbr></p> <p align="center"><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/pic/21cppc02.gif" border="0" /></p> <p>銆銆鍦ㄥ浘涓繁綰㈣壊鏍囪鍑烘潵鐨勫湴鏂規(guī)鏄富瑕侀棶棰樻墍鍦紝姘撮檰涓ょ敤姹借濺綾葷戶鎵夸簡(jiǎn)鏉ヨ嚜Car綾諱笌Boat綾葷殑灞炴т笌鏂規(guī)硶錛孋ar綾諱笌Boat綾誨悓涓篈mphibianCar綾葷殑鍩虹被錛屽湪鍐呭瓨鍒嗛厤涓夾mphibianCar鑾峰緱浜?jiǎn)鏉ヨ嚜涓や釜绫荤殑SetWeight()鎴愬憳鍑芥暟錛屽綋鎴戜滑璋冪敤a.SetWeight(3)鐨勬椂鍊欒綆楁満涓嶇煡閬撳浣曢夋嫨鍒嗗埆灞炰簬涓や釜鍩虹被鐨勮閲嶅鎷ユ湁浜?jiǎn)鐨劸c繪垚鍛樺嚱鏁癝etWeight()銆?/p> <p>銆銆鐢變簬榪欑妯$硦闂鐨勫瓨鍦ㄥ悓鏍蜂篃瀵艱嚧浜?jiǎn)AmphibianCar a(4,200,1.35f);鎵ц澶辮觸錛岀郴緇熶細(xì)浜х敓Vehicle”涓嶆槸鍩烘垨鎴愬憳鐨勯敊璇?/p> <p>銆銆浠ヤ笂闈㈢殑浠g爜涓轟緥錛屾垜浠鎯寵AmphibianCar綾繪棦鑾峰緱涓涓猇ehicle鐨勬嫹璐濓紝鑰屼笖鍙堝悓鏃跺叡浜敤Car綾諱笌Boat綾葷殑鏁版嵁鎴愬憳涓庢垚鍛樺嚱鏁板氨蹇呴』閫氳繃C++鎵鎻愪緵鐨?span style="color: #ffff00;">铏氭嫙緇ф壙</span>鎶鏈潵瀹炵幇銆?/p> <p>銆銆鎴戜滑鍦–ar綾誨拰Boat綾葷戶鎵縑ehicle綾誨嚭錛屽湪鍓嶉潰鍔犱笂virtual鍏抽敭瀛楀氨鍙互瀹炵幇铏氭嫙緇ф壙錛?span style="color: #ffff00;">浣跨敤铏氭嫙緇ф壙鍚庯紝褰撶郴緇熺鍒板閲嶇戶鎵跨殑鏃跺欏氨浼?xì)鑷姩鍏堝姞鍏ヤ竴涓猇ehicle鐨勬嫹璐濓紝褰撳啀嬈¤姹備竴涓猇ehicle鐨勬嫹璐濈殑鏃跺欏氨浼?xì)琚拷鐣ュQ屼繚璇佺戶鎵跨被鎴愬憳鍑芥暟鐨勫敮涓鎬с?/span><br />銆銆淇敼鍚庣殑浠g爜濡備笅錛屾敞鎰忚瀵熷彉鍖栵細(xì)</p> <p class="code">//紼嬪簭浣滆?綆″畞 <wbr> <wbr> <wbr><br />//绔欑偣:www.cndev-lab.com <wbr> <wbr> <wbr><br />//鎵鏈夌ǹ浠跺潎鏈夌増鏉?濡傝杞澆,璇峰姟蹇呰憲鍚嶅嚭澶勫拰浣滆?nbsp;<wbr> <wbr> <wbr><br /> <wbr><br />#include <wbr><iostream> <wbr><br />using <wbr>namespace <wbr>std; <wbr><br /> <wbr><br />class <wbr>Vehicle <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Vehicle(int <wbr>weight <wbr>= <wbr>0) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Vehicle::weight <wbr>= <wbr>weight; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"杞藉叆Vehicle綾繪瀯閫犲嚱鏁?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>SetWeight(int <wbr>weight) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"閲嶆柊璁劇疆閲嶉噺"<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Vehicle::weight <wbr>= <wbr>weight; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>virtual <wbr>void <wbr>ShowMe() <wbr>= <wbr>0; <wbr><br /> <wbr> <wbr> <wbr> <wbr>protected: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>int <wbr>weight; <wbr><br />}; <wbr><br />class <wbr>Car:<u>virtual <wbr>public</u> <wbr>Vehicle//姹借濺錛岃繖閲屾槸铏氭嫙緇ф壙 <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Car(int <wbr>weight=0,int <wbr>aird=0):Vehicle(weight) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Car::aird <wbr>= <wbr>aird; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"杞藉叆Car綾繪瀯閫犲嚱鏁?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMe() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"鎴戞槸姹借濺錛?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr>protected: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>int <wbr>aird; <wbr><br />}; <wbr><br /> <wbr><br />class <wbr>Boat:<u>virtual <wbr>public</u> <wbr>Vehicle//鑸?榪欓噷鏄櫄鎷熺戶鎵?nbsp;<wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Boat(int <wbr>weight=0,float <wbr>tonnage=0):Vehicle(weight) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>Boat::tonnage <wbr>= <wbr>tonnage; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"杞藉叆Boat綾繪瀯閫犲嚱鏁?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMe() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"鎴戞槸鑸癸紒"<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr>protected: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>float <wbr>tonnage; <wbr><br />}; <wbr><br /> <wbr><br />class <wbr>AmphibianCar:public <wbr>Car,public <wbr>Boat//姘撮檰涓ょ敤姹借濺,澶氶噸緇ф壙鐨勪綋鐜?nbsp;<wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>public: <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>AmphibianCar(int <wbr>weight,int <wbr>aird,float <wbr>tonnage) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>:Vehicle(weight),Car(weight,aird),Boat(weight,tonnage) <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>//澶氶噸緇ф壙瑕佹敞鎰忚皟鐢ㄥ熀綾繪瀯閫犲嚱鏁?nbsp;<wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"杞藉叆AmphibianCar綾繪瀯閫犲嚱鏁?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMe() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"鎴戞槸姘撮檰涓ょ敤姹借濺錛?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>void <wbr>ShowMembers() <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>{ <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>cout<<"閲嶉噺錛?<<weight<<"鍚紝"</p> <p class="code"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <<"絀烘皵鎺掗噺錛?<<aird<<"CC錛?</p> <p class="code"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <<"鎺掓按閲忥細(xì)"<<tonnage<<"鍚?<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>} <wbr><br />}; <wbr><br />int <wbr>main() <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>AmphibianCar <wbr>a(4,200,1.35f); <wbr><br /> <wbr> <wbr> <wbr> <wbr>a.ShowMe(); <wbr><br /> <wbr> <wbr> <wbr> <wbr>a.ShowMembers(); <wbr><br /> <wbr> <wbr> <wbr> <wbr>a.SetWeight(3); <wbr><br /> <wbr> <wbr> <wbr> <wbr>a.ShowMembers(); <wbr><br /> <wbr> <wbr> <wbr> <wbr>system("pause"); <wbr> <wbr><br />}</p> <p>銆銆娉ㄦ剰瑙傚療綾繪瀯閫犲嚱鏁扮殑鏋勯犻『搴忋?br /><strong>銆銆</strong>铏界劧璇磋櫄鎷熺戶鎵夸笌铏氬嚱鏁版湁涓瀹氱浉浼肩殑鍦版柟錛屼絾璇昏呭姟蹇呰璁頒綇錛屼粬浠箣闂存槸緇濆娌℃湁浠諱綍鑱旂郴鐨勶紒</p> <p>================================================================== <wbr></p> <p>琛ュ厖錛?/p> <p>1銆?nbsp;<wbr>褰撲竴涓被鏈夊涓埗綾繪椂錛屾瘡涓埗綾誨湪鍐呭瓨涓緷嬈℃帓鍒楋紝鐒跺悗璇ョ被鑷繁鐨勬垚鍛樸?br />2銆?nbsp;<wbr>姣忎竴涓埗綾葷殑闀滃儚涓紝閮藉寘鍚湁鐙珛鐨勮櫄鍑芥暟琛?br />3銆?nbsp;<wbr>褰撴妸瀛愮被鐨勬寚閽圲pcast鐨勬椂鍊欙紝涓ょUpcast鐨勬柟寮忓緱鍒扮殑緇撴灉鍒嗗埆鎸囧悜鍚勮嚜鐨勭埗綾婚暅鍍?br />4銆?nbsp;<wbr>褰撲袱涓埗綾婚噸杞界殑铏氬嚱鏁頒笉鍚屾椂錛屼細(xì)浣跨敤Thunk鏈哄埗錛屼篃灝辨槸璇達(dá)紝铏氬嚱鏁拌〃涓殑鍑芥暟鎸囬拡騫朵笉鎸囧悜瀹為檯鐨勮櫄鍑芥暟錛岃屾槸鎸囧悜涓灝忔浠g爜銆傚湪榪欎竴灝忔浠g爜涓紝浼?xì)淇敼This鎸囬拡錛圗CX瀵勫瓨鍣級(jí)錛屼嬌涔嬫寚鍚戝悎閫傜殑鐖剁被闀滃儚錛岀劧鍚庡啀璺寵漿鍒板疄闄呯殑铏氬嚱鏁頒綋銆?br />5銆?nbsp;<wbr>褰撲笉浣跨敤铏氱戶鎵挎椂錛屽叡鍚屽熀綾葷殑鎴愬憳瀵硅薄錛屽湪瀛愮被涓細(xì)鏈夌嫭绔嬩袱鍒嗭紙浠庝袱涓埗綾誨悇鑷戶鎵夸簡(jiǎn)涓浠斤級(jí)銆?br />6銆?nbsp;<wbr>褰撲嬌鐢ㄨ櫄緇ф壙鏃訛紝鍏卞悓鍩虹被鐨勬垚鍛樺璞′篃浼?xì)鍦ㄨ櫄鍑芥暟琛ㄤ腑璁板綍锛岃畨K棶瀹冨繀欏誨厛鏌ユ壘铏氬嚱鏁拌〃銆?br /><br />鏅氬閲嶇戶鎵夸笅鐨勮櫄鍑芥暟琛細(xì)<br /><a >http://blog.csdn.net/tangaowen/article/details/5830803<br /></a><a >http://www.cnblogs.com/itech/archive/2009/02/28/1399995.html<br /></a>铏氱戶鎵夸笅鐨勮櫄鍑芥暟琛細(xì)<br /><a >http://www.cnblogs.com/itech/archive/2009/02/27/1399996.html</a><a ><br /></a></p> </div><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:27 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65385.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瀛楄妭搴忥紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65384.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:27:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65384.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65384.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65384.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65384.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65384.html</trackback:ping><description><![CDATA[ 璋堝埌瀛楄妭搴忕殑闂錛屽繀鐒剁壍娑夊埌涓ゅぇCPU媧劇郴銆傞偅灝辨槸Motorola鐨凱owerPC緋誨垪CPU鍜孖ntel鐨剎86緋誨垪CPU銆侾owerPC緋誨垪閲囩敤big endian鏂瑰紡瀛樺偍鏁版嵁錛岃寈86緋誨垪鍒欓噰鐢╨ittle endian鏂瑰紡瀛樺偍鏁版嵁銆傞偅涔堢┒绔熶粈涔堟槸big endian錛屼粈涔堝張鏄痩ittle endian鍛紵 瀛楄妭欏哄簭鏄寚鍗犲唴瀛樺浜庝竴涓瓧鑺傜被鍨嬬殑鏁版嵁鍦ㄥ唴瀛樹腑鐨勫瓨鏀鵑『搴忥紝閫氬父鏈夊皬绔佸ぇ绔袱縐嶅瓧鑺傞『搴忋傚皬绔瓧鑺傚簭鎸囦綆瀛楄妭鏁版嵁瀛樻斁鍦ㄥ唴瀛樹綆鍦板潃澶勶紝楂樺瓧鑺傛暟鎹瓨鏀懼湪鍐呭瓨楂樺湴鍧澶勶紱澶х瀛楄妭搴忔槸楂樺瓧鑺傛暟鎹瓨鏀懼湪浣庡湴鍧澶勶紝浣庡瓧鑺傛暟鎹瓨鏀懼湪楂樺湴鍧澶勩傚熀浜嶺86騫沖彴鐨凱C鏈烘槸灝忕瀛楄妭搴忕殑錛岃屾湁鐨勫祵鍏ュ紡騫沖彴鍒欐槸澶х瀛楄妭搴忕殑銆傚洜鑰屽int銆乽int16銆乽int32絳夊浜?瀛楄妭綾誨瀷鐨勬暟鎹紝鍦ㄨ繖浜涘祵鍏ュ紡騫沖彴涓婂簲璇ュ彉鎹㈠叾瀛樺偍欏哄簭銆傞氬父鎴戜滑璁や負(fù)錛屽湪絀轟腑浼犺緭鐨勫瓧鑺傜殑欏哄簭鍗崇綉緇滃瓧鑺傚簭涓烘爣鍑嗛『搴忥紝鑰冭檻鍒頒笌鍗忚鐨勪竴鑷翠互鍙?qiáng)涓庡悓绫诲叾瀹凃q沖彴浜у搧鐨勪簰閫氾紝鍦ㄧ▼搴忎腑鍙戞暟鎹寘鏃訛紝灝嗕富鏈哄瓧鑺傚簭杞崲涓虹綉緇滃瓧鑺傚簭錛屾敹鏁版嵁鍖呭灝嗙綉緇滃瓧鑺傚簭杞崲涓轟富鏈哄瓧鑺傚簭銆? 鍏跺疄big endian鏄寚浣庡湴鍧瀛樻斁鏈楂樻湁鏁堝瓧鑺傦紙MSB錛夛紝鑰宭ittle endian鍒欐槸浣庡湴鍧瀛樻斁鏈浣庢湁鏁堝瓧鑺傦紙LSB錛夈?#160; 鐢ㄦ枃瀛楄鏄庡彲鑳芥瘮杈冩娊璞★紝涓嬮潰鐢ㄥ浘鍍忓姞浠ヨ鏄庛傛瘮濡傛暟瀛?x12345678鍦ㄤ袱縐嶄笉鍚屽瓧鑺傚簭CPU涓殑瀛樺偍欏哄簭濡備笅鎵紺猴細(xì)瀵逛簬0x12345678錛? <p>Big endian錛氫綆------->楂橈細(xì)12 34 56 78</p> <p>Little endian錛氫綆------->楂橈細(xì)78 56 34 12</p> <p> <wbr> <wbr> <wbr> 涓轟粈涔堣娉ㄦ剰瀛楄妭搴忕殑闂鍛紵浣犲彲鑳借繖涔堥棶銆傚綋鐒?dòng)灱屽鏋滀綘鍐欑殑绋嬪簭鍙湪鍗曟満鐜涓嬮潰杩愯锛岒q朵笖涓嶅拰鍒漢鐨勭▼搴忔墦浜ら亾錛岄偅涔堜綘瀹屽叏鍙互蹇界暐瀛楄妭搴忕殑瀛樺湪銆備絾鏄紝濡傛灉浣犵殑紼嬪簭瑕佽窡鍒漢鐨勭▼搴忎駭鐢熶氦浜掑憿錛熷湪榪欓噷鎴戞兂璇磋涓ょ璇█銆侰/C++璇█緙栧啓鐨勭▼搴忛噷鏁版嵁瀛樺偍欏哄簭鏄窡緙栬瘧騫沖彴鎵鍦ㄧ殑CPU鐩稿叧鐨勶紝鑰孞AVA緙栧啓鐨勭▼搴忓垯鍞竴閲囩敤big endian鏂瑰紡鏉ュ瓨鍌ㄦ暟鎹傝瘯鎯籌紝濡傛灉浣犵敤C/C++璇█鍦▁86騫沖彴涓嬬紪鍐欑殑紼嬪簭璺熷埆浜虹殑JAVA紼嬪簭浜掗氭椂浼?xì)漶旂敓浠涔堢粨鏋滐紵灝辨嬁涓婇潰鐨?x12345678鏉ヨ錛屼綘鐨勭▼搴忎紶閫掔粰鍒漢鐨勪竴涓暟鎹紝灝嗘寚鍚?x12345678鐨勬寚閽堜紶緇欎簡(jiǎn)JAVA紼嬪簭錛岀敱浜嶫AVA閲囧彇big endian鏂瑰紡瀛樺偍鏁版嵁錛屽緢鑷劧鐨勫畠浼?xì)灏嗕綘鐨勬暟鎹樆璇戜?x78563412銆備粈涔堬紵绔熺劧鍙樻垚鍙﹀涓涓暟瀛椾簡(jiǎn)錛熸槸鐨勶紝灝辨槸榪欑鍚庢灉銆傚洜姝わ紝鍦ㄤ綘鐨凜紼嬪簭浼犵粰JAVA紼嬪簭涔嬪墠鏈夊繀瑕佽繘琛屽瓧鑺傚簭鐨勮漿鎹㈠伐浣溿?br> <wbr> <wbr> <wbr> 鎵鏈夌綉緇滃崗璁篃閮芥槸閲囩敤big endian鐨勬柟寮忔潵浼犺緭鏁版嵁鐨勩傛墍浠ユ湁鏃舵垜浠篃浼?xì)鎶奲ig endian鏂瑰紡縐頒箣涓虹綉緇滃瓧鑺傚簭銆傚綋涓ゅ彴閲囩敤涓嶅悓瀛楄妭搴忕殑涓繪満閫氫俊鏃訛紝鍦ㄥ彂閫佹暟鎹箣鍓嶉兘蹇呴』緇忚繃瀛楄妭搴忕殑杞崲鎴愪負(fù)緗戠粶瀛楄妭搴忓悗鍐嶈繘琛屼紶杈撱?/p> <p> <wbr> <wbr> <wbr> 鍒ゆ柇灝忕榪樻槸澶х瑙勫垯鐨勬柟娉曪細(xì)</p> <p> <wbr>int x = 1;<br> <wbr>if(*(char *)&x == 1)//鍙杧鎸囬拡寮哄埗杞崲涓篶har*綾誨瀷鍐嶅彇鍊鹼紝姝ゆ椂鍙栧埌鐨勫兼槸int鏈浣庡瓧鑺傚?br> <wbr> <wbr> <wbr> <wbr> printf("little-endian\n");<br> <wbr>else<br> <wbr> <wbr> <wbr> <wbr> printf("big-endian\n");</p> <p> <wbr></p> <p> <wbr> <wbr> <wbr> <wbr> 鍙﹀琛ュ厖錛?/p> <p>1錛嶣IG-ENDIAN銆丩ITTLE-ENDIAN銆佽窡CPU鏈夊叧鐨勶紝姣忎竴縐岰PU涓嶆槸BIG-ENDIAN灝辨槸LITTLE-ENDIAN銆傜綉緇滃瓧鑺傚簭鏄寚鏁版嵁鍦ㄧ綉緇滀笂浼犺緭鏃舵槸澶уご榪樻槸灝忓ご鐨勶紝鍦↖nternet鐨勭綉緇滃瓧鑺傚簭鏄疊IG-ENDIAN銆傛墍璋撶殑JAVA瀛楄妭搴忔寚鐨勬槸鍦↗AVA铏氭嫙鏈轟腑澶氬瓧鑺傜被鍨嬫暟鎹殑瀛樻斁欏哄簭錛孞AVA瀛楄妭搴忎篃鏄疊IG-ENDIAN銆?/p> <p>2錛庢墍浠ュ湪鐢–/C++鍐欓氫俊紼嬪簭鏃訛紝鍦ㄥ彂閫佹暟鎹墠鍔″繀鐢╤tonl鍜宧tons鍘繪妸鏁村瀷鍜岀煭鏁村瀷鐨勬暟鎹繘琛屼粠涓繪満瀛楄妭搴忓埌緗戠粶瀛楄妭搴忕殑杞崲錛岃屾帴鏀舵暟鎹悗瀵逛簬鏁村瀷鍜岀煭鏁村瀷鏁版嵁鍒欏繀欏昏皟鐢╪tohl鍜宯tohs瀹炵幇浠庣綉緇滃瓧鑺傚簭鍒頒富鏈哄瓧鑺傚簭鐨勮漿鎹€傚鏋滈氫俊鐨勪竴鏂規(guī)槸JAVA紼嬪簭銆佷竴鏂規(guī)槸C/C++紼嬪簭鏃訛紝鍒欓渶瑕佸湪C/C++涓渚т嬌鐢ㄤ互涓婂嚑涓柟娉曡繘琛屽瓧鑺傚簭鐨勮漿鎹紝鑰孞AVA涓渚э紝鍒欎笉闇瑕佸仛浠諱綍澶勭悊錛屽洜涓篔AVA瀛楄妭搴忎笌緗戠粶瀛楄妭搴忛兘鏄疊IG-ENDIAN錛屽彧瑕丆/C++涓渚ц兘姝g‘榪涜杞崲鍗沖彲錛堝彂閫佸墠浠庝富鏈哄簭鍒扮綉緇滃簭錛屾帴鏀舵椂鍙嶅彉鎹級(jí)銆傚鏋滈氫俊鐨勫弻鏂歸兘鏄疛AVA錛屽垯鏍規(guī)湰涓嶇敤鑰冭檻瀛楄妭搴忕殑闂浜?jiǎn)銆?/p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:27 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65384.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎷瘋礉鏋勯犲嚱鏁板拰璧嬪艱繍綆楃閲嶈澆錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65382.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:26:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65382.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65382.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65382.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65382.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65382.html</trackback:ping><description><![CDATA[<p>浠ヤ笅璁ㄨ涓皢鐢ㄥ埌鐨勪緥瀛?</p> <p>class CExample<br />{<br />public:<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample(){pBuffer=NULL; nSize=0;}<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ~CExample(){delete pBuffer;}<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> void Init(int n){ pBuffer=new char[n]; nSize=n;}<br />private:<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> char *pBuffer; //綾葷殑瀵硅薄涓寘鍚寚閽?鎸囧悜鍔ㄦ佸垎閰嶇殑鍐呭瓨璧勬簮<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> int nSize;<br />}; </p><p><wbr></p> <p>榪欎釜綾葷殑涓昏鐗圭偣鏄寘鍚寚鍚戝叾浠栬祫婧愮殑鎸囬拡銆?pBuffer鎸囧悜鍫嗕腑鍒嗛厤鐨勪竴孌靛唴瀛樼┖闂淬?nbsp;</p><p><wbr></p> <p>涓銆佹嫹璐濇瀯閫犲嚱鏁?/p> <p>int main(int argc, char* argv[])<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample theObjone;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> theObjone.Init(40);<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> //鐜板湪闇瑕佸彟涓涓璞?闇瑕佸皢浠栧垵濮嬪寲涓簍heObjone鐨勭姸鎬?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample theObjtwo=theObjone;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ...<br />} </p><p><wbr></p> <p> <wbr> <wbr> <wbr> 璇彞"CExample theObjtwo=theObjone;"<strong style="color: #ffff00;">鐢╰heObjone鍒濆鍖杢heObjtwo</strong>銆傚叾瀹屾垚鏂瑰紡鏄唴瀛樻嫹璐濓紝澶嶅埗鎵鏈夋垚鍛樼殑鍊箋傚畬鎴愬悗錛宼heObjtwo.pBuffer==theObjone.pBuffer銆傚嵆瀹冧滑灝嗘寚鍚戝悓鏍風(fēng)殑鍦版柟錛屾寚閽堣櫧鐒跺鍒朵簡(jiǎn)錛屼絾鎵鎸囧悜鐨勭┖闂村茍娌℃湁澶嶅埗錛岃屾槸鐢變袱涓璞″叡鐢ㄤ簡(jiǎn)銆傝繖鏍蜂笉絎﹀悎瑕佹眰錛屽璞′箣闂翠笉鐙珛浜?jiǎn)锛岒q朵負(fù)絀洪棿鐨勫垹闄ゅ甫鏉ラ殣鎮(zhèn)c傛墍浠ラ渶瑕侀噰鐢ㄥ繀瑕佺殑鎵嬫鏉ラ伩鍏嶆綾繪儏鍐點(diǎn)?/p> <p> <wbr> <wbr> <wbr> 鍥為【涓涓嬫璇彞鐨勫叿浣撹繃紼?棣栧厛寤虹珛瀵硅薄theObjtwo錛屽茍璋冪敤鍏舵瀯閫犲嚱鏁幫紝鐒跺悗鎴愬憳琚嫹璐濄傚彲浠ュ湪鏋勯犲嚱鏁頒腑娣誨姞鎿嶄綔鏉ヨВ鍐蟲寚閽堟垚鍛樼殑闂銆傛墍浠++璇硶涓櫎浜?jiǎn)鎻愪緵缂虹渷迮炲紡鐨勬瀯閫犲嚱鏁板錛岃繕瑙勮寖浜?jiǎn)鍙︿竴縐嶇壒孌婄殑鏋勯犲嚱鏁幫細(xì)鎷瘋礉鏋勯犲嚱鏁般?/p> <p> <wbr> <wbr> <wbr> 涓婇潰鐨勮鍙ヤ腑錛屽鏋滅被涓畾涔変簡(jiǎn)鎷瘋礉鏋勯犲嚱鏁幫紝榪欏璞″緩绔嬫椂錛岃皟鐢ㄧ殑灝嗘槸鎷瘋礉鏋勯犲嚱鏁幫紝鍦ㄦ嫹璐濇瀯閫犲嚱鏁頒腑錛屽彲浠ユ牴鎹紶鍏ョ殑鍙橀噺錛屽鍒舵寚閽堟墍鎸囧悜鐨勮祫婧愩?/p> <p> <wbr> <wbr> <wbr> 鎷瘋礉鏋勯犲嚱鏁扮殑鏍煎紡涓?鏋勯犲嚱鏁板悕(瀵硅薄鐨勫紩鐢?</p> <p> <wbr> <wbr> <wbr> 鎻愪緵浜?jiǎn)鎷疯礉鏋勯犲嚱鏁板悗鐨凜Example綾誨畾涔変負(fù):</p> <p>class CExample<br />{<br />public:<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample(){pBuffer=NULL; nSize=0;}<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ~CExample(){delete pBuffer;}<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample(const CExample&); //鎷瘋礉鏋勯犲嚱鏁?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> void Init(int n){ pBuffer=new char[n]; nSize=n;}<br />private:<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> char *pBuffer; //綾葷殑瀵硅薄涓寘鍚寚閽?鎸囧悜鍔ㄦ佸垎閰嶇殑鍐呭瓨璧勬簮<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> int nSize;<br />};</p> <p>CExample::CExample(const CExample& RightSides) //鎷瘋礉鏋勯犲嚱鏁扮殑瀹氫箟<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> nSize=RightSides.nSize; //澶嶅埗甯歌鎴愬憳<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> pBuffer=new char[nSize]; //澶嶅埗鎸囬拡鎸囧悜鐨勫唴瀹?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> memcpy(pBuffer,RightSides.pBuffer,nSize*sizeof(char));<br />} </p><p><wbr></p> <p> <wbr> <wbr> <wbr> 榪欐牱錛屽畾涔夋柊瀵硅薄錛屽茍鐢ㄥ凡鏈夊璞″垵濮嬪寲鏂板璞℃椂錛孋Example(const CExample& RightSides)灝嗚璋冪敤錛岃屽凡鏈夊璞$敤鍒悕RightSides浼犵粰鏋勯犲嚱鏁幫紝浠ョ敤鏉ヤ綔澶嶅埗銆?/p> <p>  <wbr> <wbr> 鍘熷垯涓婏紝搴旇涓烘墍鏈夊寘鍚姩鎬佸垎閰嶆垚鍛樼殑綾婚兘鎻愪緵鎷瘋礉鏋勯犲嚱鏁般?/p> <p> <wbr> <wbr> <wbr> 鎷瘋礉鏋勯犲嚱鏁扮殑鍙︿竴縐嶈皟鐢細(xì)褰撳璞$洿鎺ヤ綔涓哄弬鏁頒紶緇欏嚱鏁版椂錛屽嚱鏁板皢寤虹珛瀵硅薄鐨勪復(fù)鏃舵嫹璐濓紝榪欎釜鎷瘋礉榪囩▼涔熷皢璋冪敤鎷瘋礉鏋勯犲嚱鏁般?/p> <p>渚嬪</p> <p>BOOL testfunc(CExample obj);</p> <p>testfunc(theObjone); //瀵硅薄鐩存帴浣滀負(fù)鍙傛暟銆?/p> <p>BOOL testfunc(CExample obj)<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> //閽堝obj鐨勬搷浣滃疄闄呬笂鏄拡瀵瑰鍒跺悗鐨勪復(fù)鏃舵嫹璐濊繘琛岀殑<br />} </p><p><wbr></p> <p>榪樻湁涓縐嶆儏鍐碉紝涔熸槸涓庝復(fù)鏃跺璞℃湁鍏崇殑錛屽綋鍑芥暟涓殑灞閮ㄥ璞¤琚繑鍥炵粰鍑芥暟璋冭呮椂錛屼篃灝嗗緩绔嬫灞閮ㄥ璞$殑涓涓復(fù)鏃舵嫹璐濓紝鎷瘋礉鏋勯犲嚱鏁頒篃灝嗚璋冪敤</p> <p>CTest func()</p><p>{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CTest theTest;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> return theTest;<br />} </p><p><wbr></p> <p>浜屻佽祴鍊肩鐨勯噸杞?/p> <p>涓嬮潰鐨勪唬鐮佷笌涓婁緥鐩鎬技</p> <p>int main(int argc, char* argv[])<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample theObjone;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> theObjone.Init(40);<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample theObjthree;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> theObjthree.Init(60);</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> //鐜板湪闇瑕佷竴涓璞¤祴鍊兼搷浣?琚祴鍊煎璞$殑鍘熷唴瀹硅娓呴櫎錛屽茍鐢ㄥ彸杈瑰璞$殑鍐呭濉厖銆?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> theObjthree=theObjone;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> return 0;<br />}</p><p> <wbr> <wbr> <wbr> 涔熺敤鍒頒簡(jiǎn)"="鍙鳳紝浣嗕笌涔嬪墠鐨勪緥瀛愬茍涓嶅悓錛?strong style="color: #ffff00;">涔嬪墠鐨勪緥瀛愪腑錛?="鍦ㄥ璞″0鏄庤鍙ヤ腑錛岃〃紺哄垵濮嬪寲銆傛洿澶氭椂鍊?榪欑鍒濆鍖栦篃鍙敤鎷彿琛ㄧず銆?/strong>渚嬪 CExample theObjone(theObjtwo); <strong style="color: #ffff00;">鑰屾湰渚嬪瓙涓紝"="琛ㄧず璧嬪兼搷浣溿?/strong>灝嗗璞heObjone鐨勫唴瀹瑰鍒跺埌瀵硅薄theObjthree;錛岃繖鍏朵腑娑夊強(qiáng)鍒板璞heObjthree鍘熸湁鍐呭鐨勪涪寮冿紝鏂板唴瀹圭殑澶嶅埗銆備絾"="鐨勭己鐪佹搷浣滃彧鏄皢鎴愬憳鍙橀噺鐨勫肩浉搴斿鍒躲傛棫鐨勫艱鑷劧涓㈠純銆傜敱浜庡璞″唴鍖呭惈鎸囬拡錛屽皢閫犳垚涓嶈壇鍚庢灉:鎸囬拡鐨勫艱涓㈠純浜?jiǎn)锛屼絾鎸囬拡鎸囧悜鐨勫唴瀹跪q舵湭閲婃斁銆傛寚閽堢殑鍊艱澶嶅埗浜?jiǎn)锛屼絾鎸囬拡鎵鎸囧唴瀹瑰茍鏈鍒躲?/p> <p> <wbr> <wbr> <wbr> 鍥犳錛屽寘鍚姩鎬佸垎閰嶆垚鍛樼殑綾婚櫎鎻愪緵鎷瘋礉鏋勯犲嚱鏁板錛岃繕搴旇鑰冭檻閲嶈澆"="璧嬪兼搷浣滅鍙楓?/p> <p>綾誨畾涔夊彉涓?</p> <p>class CExample<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ...<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample(const CExample&); //鎷瘋礉鏋勯犲嚱鏁?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CExample& operator = (const CExample&); //璧嬪肩閲嶈澆<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ...<br />};</p><p>//璧嬪兼搷浣滅閲嶈澆<br />CExample & CExample::operator = (const CExample& RightSides)<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> nSize=RightSides.nSize; //澶嶅埗甯歌鎴愬憳<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> char *temp=new char[nSize]; //澶嶅埗鎸囬拡鎸囧悜鐨勫唴瀹?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> memcpy(temp,RightSides.pBuffer,nSize*sizeof(char));</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> delete []pBuffer; //鍒犻櫎鍘熸寚閽堟寚鍚戝唴瀹?nbsp;<wbr> (灝嗗垹闄ゆ搷浣滄斁鍦ㄥ悗闈紝閬垮厤X=X鐗規(guī)畩鎯呭喌涓嬶紝鍐呭鐨勪涪澶?<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> pBuffer=temp; <wbr> <wbr> //寤虹珛鏂版寚鍚?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> return *this<br />} </p><p><wbr></p> <p>涓夈佹嫹璐濇瀯閫犲嚱鏁頒嬌鐢ㄨ祴鍊艱繍綆楃閲嶈澆鐨勪唬鐮併?/p> <p>CExample::CExample(const CExample& RightSides)<br />{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> pBuffer=NULL;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> *this=RightSides <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> //璋冪敤閲嶈澆鍚庣殑"="<br />}</p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:26 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65382.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>struct鍜宑lass鍖哄埆錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65381.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:25:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65381.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65381.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65381.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65381.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65381.html</trackback:ping><description><![CDATA[<p>1銆侀粯璁ょ戶鎵挎潈闄愩傚鏋滀笉鏄庣‘鎸囧畾錛屾潵鑷猚lass鐨勭戶鎵挎寜鐓rivate緇ф壙澶勭悊錛屾潵鑷猻truct鐨勭戶鎵挎寜鐓ublic緇ф壙澶勭悊錛?br />2銆佹垚鍛樼殑榛樿璁塊棶鏉冮檺銆俢lass鐨勬垚鍛橀粯璁ゆ槸private鏉冮檺錛宻truct榛樿鏄痯ublic鏉冮檺銆?br /><br />ps:<br />struct鍜宑lass瀵逛簬鍒濆鍖栭兘鏄渶瑕佸湪鍒濆鍖栧垪琛ㄤ腑榪涜錛屾垨鑰呭湪鏋勯犲嚱鏁頒腑璧嬪箋?br /><br /></p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:25 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65381.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瀹瑰櫒鍐呮寚閽堢殑new鍜宒elete錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65380.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:23:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65380.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65380.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65380.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65380.html</trackback:ping><description><![CDATA[<p> <wbr> 瀹瑰櫒鍦⊿TL涓璁や負(fù)鏄櫤鑳界殑銆傚畠浠敮鎸佸悜鍓嶅拰鍚戝悗鐨勮凱浠e櫒錛涘畠浠兘鍛婅瘔浣犲畠鎵淇濆瓨鐨勫璞$被鍨嬶紙閫氳繃typedef value_type錛夛紱鍦ㄦ彃鍏ュ拰鍒犻櫎榪囩▼涓畠浠繘琛屼簡(jiǎn)鑹ソ鐨勫唴瀛樼鐞嗭紱瀹冧滑灝嗘姤鍛婅嚜宸卞寘鍚簡(jiǎn)澶氬皯瀵硅薄鍜岃嚜宸辨渶澶氳兘鍖呭惈澶氬皯瀵硅薄錛堝垎鍒氳繃size鍜宮ax_size鍙栧緱錛夛紱騫朵笖錛屽綋瀹瑰櫒閿姣佹椂錛屽畠鑷姩閿姣佹瘡涓鍖呭惈鐨勫璞°?/p> <p> <wbr> 鎷ユ湁濡傛鑱槑鐨勫鍣紝璁稿紼嬪簭鍛樿嚜宸變笉鍐嶆媴蹇?jī)娓呯悊闂銆備粬浠涓哄鍣ㄤ細(xì)涓轟粬浠搷蹇?jī)銆傚鏁版儏鍐典笅錛屼粬浠紜紝浣嗘槸褰撳鍣ㄥ寘鎷敱new鐢熶駭瀵硅薄鎸囬拡鏃訛紝浠栦滑灝變笉鏄お姝g‘銆傛鏃犵枒闂紝鎸囬拡瀹瑰櫒鍦ㄩ攢姣佹椂錛屼細(xì)閿姣佸畠鎵鍖呭鐨勬瘡涓涓厓绱狅紝浣嗘槸鎸囬拡鐨?#8220;鏋愭瀯鍑芥暟”鍙槸涓涓┖鎿嶄綔銆傚畠涓嶄細(xì)璋冪敤delete銆?/p> <p> <wbr> 緇撴灉鏄紝浠ヤ笅浠g爜鐩存帴瀵艱嚧鍐呭瓨璧勬簮娉勬紡錛?/p> <p align=left>void doSomething()</p> <p align=left>{</p> <p align=left>vector<Widget*> vwp;</p> <p align=left>for (int i = 0; i < SOME_MAGIC_NUMBER; ++i)</p> <p align=left>vwp.push_back(new Widget);</p> <p align=left>… // use vwp</p> <p align=left>} //Widgets are leaked here!</p> <p> <wbr> 褰撶寮vwp鐨勪綔鐢ㄨ寖鍥存椂錛寁wp鐨勬瘡涓涓厓绱犻兘浼?xì)琚攢姣侊紝浣嗘槸榪欏茍涓嶆敼鍙榥ew鎵浜х敓鐨勫璞℃病鏈夎delete榪欎釜浜嬪疄銆傝繖涓垹闄ゅ姩浣滄槸紼嬪簭鍛樼殑璐d換錛岃屼笉鏄痸ector鐨勩傝繖鍏跺疄鏄竴涓姛鑳斤紝鍥犱負(fù)鍙湁紼嬪簭鍛樻墠鐭ラ亾鎸囬拡鏄惁闇瑕佸垹闄ゃ?/p> <p> <wbr> 閫氬父錛岀▼搴忓憳甯屾湜瀹冧滑閭f牱錛堝垹闄ゆ寚閽堬級(jí)銆傚湪閭g鎯呭喌錛堜笂渚嬶級(jí)涓紝浣垮畠鍙戠敓鍏跺疄寰堢畝鍗曘?/p> <p align=left>void doSomething()</p> <p align=left>{</p> <p align=left>vector<Widget*> vwp;</p> <p align=left>… // as before</p> <p align=left>for (vector<Widget*>::iterator i = vwp.begin();i != vwp.end(),++i) {</p> <p align=left>delete *i;</p> <p align=left>}</p> <p>锝?/p> <p> <wbr> 榪欒兘琛岋紝濡傛灉浣犱笉鏄崄鍒嗗湪鎰忓畠鍙槸“鑳借”銆傞棶棰樹箣涓鏄柊鐨刦or寰幆鍋氫簡(jiǎn)寰堝for_each鍋氱殑浜嬶紝浣嗗畠涓嶅儚for_each涓鏍鋒竻鏋愩傚彟涓涓棶棰樻槸浠g爜涓嶆槸寮傚父瀹夊叏銆傚鏋滀竴涓紓甯稿湪vwp濉笂鎸囬拡涔嬪悗錛岃岃繖浜涙寚閽堣繕娌℃湁鍒犻櫎涔嬪墠琚姏鍑恒傝祫婧愭硠婕忓啀嬈″嚭鐜般傚垢榪愮殑鏄袱涓棶棰橀兘鍙互鍏嬫湇銆?/p> <p> <wbr> 淇敼for_each綾諱技鐨勪唬鐮佷互浣跨敤鐪熸鐨刦or_each錛岄渶瑕佸皢delete鎿嶄綔緗簬錛堜豢錛夊嚱鏁板璞′腑銆傝繖鍍忎竴涓効绔ユ父鎴忥紝鍋囪浣犳湁涓涓枩嬈笌STL涓璧風(fēng)帺娓告垙鐨勫皬瀛┿?/p> <p align=left>template<typename T></p> <p align=left>struct DeleteObject:  <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>// Item 40 describes why</p> <p align=left>public unary_function<const T*, void> { //this inheritance is here</p> <p align=left> <wbr></p> <p align=left>void operator()(const T* ptr) const</p> <p align=left>delete ptr;</p> <p align=left>}</p> <p align=left>};</p> <p> <wbr> 鐜板湪浣犲彲浠ヨ繖鏍峰仛錛?/p> <p align=left>void doSomething()</p> <p align=left>{</p> <p align=left>… // as before</p> <p align=left>for_each(vwp.begin(), vwp.end(), DeleteObject<Widget>);</p> <p align=left>}</p> <p> <wbr> 涓嶅お璧拌繍錛屽畠瑕佹眰鎸囨槑DeleteObject鍒犻櫎鐨勫璞$被鍨嬶紙榪欓噷鏄細(xì)Widget 錛夈備護(hù)浜鴻鍘岋紝vwp鏄竴涓獀ector<Widget*>錛屽洜姝eteleObject鍒犻櫎鐨勫綋鐒舵槸Widget鎸囬拡錛佽繖縐嶅啑浣欎笉鍙槸浠や漢璁ㄥ帉錛屽洜涓哄畠鍙兘瀵艱嚧闅句互媯(gè)鏌ョ殑bug鍑虹幇銆傝瘯鎯充竴涓嬶紝渚嬪錛屾湁浜烘晠鎰忓喅瀹氳浠巗tring緇ф壙錛?/p> <p align=left>class SpecialString: public string { ...};</p> <p> <wbr> 榪欐槸涓縐嶅嵄闄╃殑浜х墿錛屽洜涓簊tring涓庡叾瀹冩爣鍑哠TL瀹瑰櫒涓鏍鳳紝娌℃湁virtual鏋愭瀯鍑芥暟銆傚叕鏈夌戶鎵夸竴涓病鏈夎櫄鏋愭瀯鍑芥暟鐨勫璞℃槸C++涓涓富瑕佺殑璇尯錛坅 major C++ no-no錛?榪戜竴姝ョ殑緇嗚妭錛屽湪浠諱綍涓涓緢濂界殑C++涔︿腑閮芥湁璁ㄨ銆傚湪Effective C++涓紝瀹冭鏀懼湪Item 14)銆備笉璁哄浣曪紝鏈変漢濡傛浣滀簡(jiǎn)銆傝冭檻涓涓嬩互涓嬩唬鐮佺殑琛屼負(fù)錛?/p> <p align=left>void doSomething()</p> <p align=left>{</p> <p align=left>deque<SpecialString*> dssp;</p> <p align=left>…</p> <p align=left>for_each( dssp.begin(), dssp.end(), // undefined behavior! Deletion</p> <p align=left>DeleteObject<string>()); //of a derived object via a base</p> <p align=left>} // class pointer where there is</p> <p align=left>//no virtual destructor</p> <p> <wbr> 娉ㄦ剰dssp澹版槑涓轟繚瀛楽pecialString鐨勬寚閽堬紝浣嗘槸for_each寰幆鐨勪綔鑰呭憡璇塂eleteObject錛屽畠鍑嗗鍒犻櫎string鐨勬寚閽堛傚緢瀹規(guī)槗鍙戠幇浠涔堟牱鐨勯敊璇細(xì)鍙戠敓銆係pecialString鏃犵枒鍦ㄥ緢澶х▼搴︿笂琛ㄧ幇涓簊tring銆傚洜姝ゆ湁浜轟細(xì)蹇樿瀹冪殑鐢ㄦ埛錛屼粬浠細(xì)涓嶈寰椾粬浠嬌鐢ㄧ殑鏄疭pecialString鑰屼笉鏄痵tring銆?/p> <p> <wbr> 鍙互鎺掗櫎榪欎釜閿欒錛堜篃鍙互鍑忓皯DeleteObject鐢ㄦ埛鏁叉墦閿洏鐨勬鏁幫級(jí)浣跨敤緙栬瘧鍣ㄦ帹緇庡嚭浼犵粰DeleteObject::operator()鐨勬寚閽堢被鍨嬨傛墍鏈夊伐浣滃彧鏄妸妯℃澘浠嶥eleteObject綾葷Щ鍒皁perator()涓娿?/p> <p align=left>struct DeleteObject { // templatization and base</p> <p align=left>// class removed here</p> <p align=left>template<typename T> <em>II</em> templatization added here</p> <p align=left>void operator()(const T* ptr) const</p> <p align=left>{</p> <p align=left>delete ptr;</p> <p align=left>}</p> <p align=left>}</p> <p> <wbr> 緙栬瘧鍣ㄧ煡閬撲紶閫掔粰DeleteObject::operator錛堬級(jí)鐨勬寚閽堢被鍨嬶紝鍥犳瀹冨皢鑷姩涓鴻綾誨瀷鎸囬拡鐢熸垚涓涓猳perator鐨勫疄渚嬨傝繖縐嶇被鍨嬫帹緇庣殑浜х敓錛屽彇鍐充簬鎴戜滑鏀懼純DeleteObject鐨勫彲閫傚簲鎬с傝冭檻涓涓婦eleteObject琚璁′負(fù)濡備綍浣跨敤錛屽氨寰堥毦鎵懼嚭鍙兘鍙戠敓闂鐨勫湴鏂廣?/p> <p> <wbr> 浣跨敤榪欎竴鏂扮増鐨凞eleteObject錛孲pecialString瀹㈡埛鐨勪唬鐮佺湅璧鋒潵鍍忚繖鏍鳳細(xì)</p> <p align=left>void doSomething()</p> <p align=left>{</p> <p align=left>deque<SpecialString*> dssp;</p> <p align=left>…</p> <p align=left>for_each( dssp.begin(), dssp.end(),</p> <p align=left>DeleteObject ()); // ah! well-defined behavior!</p> <p align=left>}</p> <p> <wbr> 鐩存帴鑰屼笖綾誨瀷瀹夊叏錛屽氨鍍忔垜浠墍鍠滄鐨勯偅鏍楓?/p> <p> <wbr> 浣嗘槸瀹冭繕涓嶆槸寮傚父瀹夊叏銆傚鏋淪pecialString鐢熶駭浜?jiǎn)锛屼絾杩樻病鏈夎皟鐢╢or_each錛屼竴涓紓甯歌鎶涘嚭錛屾硠婕忓皢鍑虹幇銆傝繖涓棶棰樺彲浠ョ敤寰堝鏂規(guī)硶瑙e喅錛屼絾鏈綆鍗曠殑涔熻鏄嬌鐢ㄦ櫤鑳芥寚閽堝鍣ㄥ彇浠f寚閽堝鍣紝閫氬父浣跨敤涓涓紩鐢ㄨ鏁扮殑鏅鴻兘鎸囬拡錛堝鏋滀笉鐔熸?zhèn)夋欨檭芥寚閽堢殑姒傚康锛屽彲浠ュ湪涓珮珩擟++璇葷墿涓壘鍒般傚湪More Effective C++涓紝榪欎簺鏉愭枡鍦↖tem 28銆傦級(jí)</p> <p> <wbr> STL鏈韓騫朵笉鍖呮嫭寮曠敤璁版暟鐨勬櫤鑳芥寚閽堬紝緙栧啓涓涓ソ鐨勶紞鎵鏈夋儏鍐典笅閮芥紜紞澶瘜鏈夋妧宸э紝鍥犳闄ら潪鐪熺殑闇瑕侊紝騫朵笉闇瑕佽繖鏍峰仛銆傛垜錛堜綔鑰咃級(jí)1996騫村湪More Effective C++鍙戝竷浜?jiǎn)浜?jiǎn)涓涓紩鐢ㄨ鏁扮殑鏅鴻兘鎸囬拡錛屽敖綆″畠鍩轟簬涓浜涚‘瀹氱殑鏅鴻兘鎸囬拡瀹炵幇錛岃屼笖鍦ㄥ彂甯冨墠鐢卞浣嶆湁緇忛獙鐨勫紑鍙戣呰璁鴻繃錛屼絾鏄繖浜涘勾榪樻槸鏈変竴鍫嗗噯紜殑Bug琚彂鐜般傚緢澶氬紩鐢ㄨ鏁扮殑鏅鴻兘鎸囬拡鍙兘澶辮觸鐨勫井濡欐儏鍐佃璇存槑銆傦紙緇嗚妭鍦∕ore Effective C++鍕樿涓璁猴級(jí)</p> <p> <wbr> 騫歌繍鍦幫紝鍑犱箮涓嶉渶瑕佽嚜宸卞啓涓涓櫤鑳芥寚閽堬紝鍥犱負(fù)宸查獙姝g殑瀹炵幇騫朵笉闅炬壘銆傚湪Boost搴擄紙鍙傝冩潯嬈?0錛変腑灝辨湁涓涓繖鏍風(fēng)殑share_ptr銆備嬌鐢˙oost鐨剆hare_ptr錛屾湰鏉℃鏈鍒濈殑渚嬪瓙鍙互閲嶅啓涓猴細(xì)</p> <p align=left>void doSomething()</p> <p align=left>{</p> <p align=left>typedef boost::shared_ ptr<Widget> SPW; //SPW = "shared_ptr</p> <p align=left>// to Widget"</p> <p align=left>vector<SPW> vwp;</p> <p align=left>for (int i = 0; i < SOME_MAGIC_NUMBER; ++i)</p> <p align=left>vwp.push_back(SPW new Widget);  <wbr> <wbr>// create a SPW from a</p> <p align=left>// Widget*, then do a</p> <p align=left>//push_back on it</p> <p align=left>…  <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>// use vwp</p> <p align=left>}  <wbr> <wbr>// no Widgets are leaked here, not</p> <p align=left>// even if an exception is thrown</p> <p align=left>//in the code above</p> <p> <wbr> 鍗冧竾涓嶈兘琚玜uto_ptr鎰氬紕浜?jiǎn)锛屼笉瑕佽湄?fù)鍒涘緩auto_ptr鐨勫鍣紝鎸囬拡浼?xì)琚嚜鍔ㄥ垹闄ゃ傝繖鏄彲鎬曟槸鎯蟲硶錛屽畠鏄姝ゅ嵄闄╋紝鎴戝噯澶囩敤鏁翠釜鏉℃8鏉ヨ鏄庝綘涓嶅簲浣跨敤瀹冦?/p> <p> <wbr> 搴旇浣忕殑鏄疭TL瀹瑰櫒鏄櫤鑳界殑錛屼絾瀹冧笉瓚充互鐭ラ亾鏄惁瑕佸垹闄ゅ畠鍖呭惈鐨勬寚閽堛備負(fù)浜?jiǎn)閬垮厤璧勬簮娉勬紡锛屼娇鐢ㄦ寚閽堝鍣ㄦ椂搴斿垹闄ゆ寚閽堛備綘闇瑕佷嬌鐢ㄦ櫤鑳芥寚閽堟垨鍦ㄥ鍣ㄩ攢姣佸墠鎵嬪伐鍒犻櫎姣忎竴涓寚閽堛?/p> <p> <wbr> 鏈鍚庯紝涓涓被浼間簬DeleteObject鐨勭粨鏋勫彲浠ユ柟渚垮湴閬垮厤浣跨敤鎸囬拡瀹瑰櫒鏃剁殑璧勬簮娉勬紡錛岃繖涔熻浼?xì)鋴射綘鑱旀儗檽v錛屼篃璁稿彲鑳藉垱寤轟竴涓被浼肩殑DeleteArray錛岄伩鍏嶄嬌鐢ㄦ暟緇勬寚閽堝鍣ㄦ椂鐨勮祫婧愭硠婕忋傚綋鐒?dòng)灱寴q欐槸鍙兘鐨勶紝浣嗘槸鏄惁鏄庢櫤灝辨槸鍙︿竴涓棶棰樹簡(jiǎn)銆傛潯嬈?3瑙i噴浜?jiǎn)湄?fù)浠涔堝姩鎬佺敵璇鋒暟緇勬繪槸涓嶅vector鍜宻tring瀵硅薄銆傛墍浠ュ湪浣犲潗涓嬫潵鍐橠eleteArray涔嬪墠錛岃鍏堢湅涓鐪嬫潯嬈?3銆傚鏋滃垢榪愶紝DeleteArray鐨勬椂浠e皢姘歌繙涓嶄細(xì)鍒版潵銆?/p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:23 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65380.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>CString錛圡FC錛夛紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65379.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:21:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65379.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65379.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65379.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65379.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65379.html</trackback:ping><description><![CDATA[<font size=5>涓銆佷富瑕佸嚱鏁?nbsp;<wbr></font> <p><font style="FONT-SIZE: 14px" size=3>vc涓渶涓昏鍑芥暟涓嶆槗鐞嗚В銆?/font></p> <p><a name=涓昏鍑芥暟鐨勫疄鐜?</a><font style="FONT-SIZE: 14px" size=3>CString::CString(char *p)</font></p> <p><font style="FONT-SIZE: 14px" size=3>{</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> int n=strlen(p);</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>m_data = new char[n+1];</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>strcpy(m_data,p);</font></p> <p><font style="FONT-SIZE: 14px" size=3>}</font></p> <p><font style="FONT-SIZE: 14px" size=3>CString::CString(CString &other)</font></p> <p><font style="FONT-SIZE: 14px" size=3>{</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>int n=strlen(other.m_data);</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>m_data = new char[n+1];</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>strcpy(m_data,other.m_data);</font></p> <p><font style="FONT-SIZE: 14px" size=3>}</font></p> <p><font style="FONT-SIZE: 14px" size=3>CString& CString::operator = (CString& other)</font></p> <p><font style="FONT-SIZE: 14px" size=3>{</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>delete[] m_data;</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>int n=strlen(other.m_data);</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>m_data = new char[n+1];</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>strcpy(m_data,other.m_data);</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>return *this;</font></p> <p><font style="FONT-SIZE: 14px" size=3>}</font></p> <p><font style="FONT-SIZE: 14px" size=3>String::~String()</font></p> <p><font style="FONT-SIZE: 14px" size=3>{</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr>delete [] m_data;</font></p> <p><font style="FONT-SIZE: 14px" size=3>}</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr></font></p> <p><a name=甯哥敤鍑芥暟></a><font style="FONT-SIZE: 14px" size=3>1銆丆ollate錛孋ompare <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font></p> <p><font style="FONT-SIZE: 14px" size=3>涓庝竴涓瓧絎﹂暱鎸囬拡鎵鎸囩殑瀛楃涓茶繘琛屾瘮杈冿紝涓巗trcmp鐩稿悓錛屽畠浠殑鍖哄埆鏄紝鍒嗗埆璋冪敤_tcscoll錛宊tcsicmp銆?/font></p> <p> <wbr></p> <p><font style="FONT-SIZE: 14px" size=3>2銆丏elete</font></p> <p><font style="FONT-SIZE: 14px"><strong>int Delete( int</strong> <em>nIndex</em><strong>, int</strong> <em>nCount</em> <strong>= 1 )</strong></font></p> <p><font style="FONT-SIZE: 14px">榪斿洖鍊兼槸琚垹闄ゅ墠鐨勫瓧絎︿覆鐨勯暱搴︼紝nIndex鏄涓涓鍒犻櫎鐨勫瓧絎︼紝nCount鏄竴嬈″垹闄ゅ嚑涓瓧絎︺傛牴鎹垜瀹為獙寰楀嚭鐨勭粨鏋滐細(xì)褰搉Count>瀛楃涓茬殑闀垮害鏃朵細(xì)鍑洪敊錛屽綋nCount榪囧ぇ錛屾病鏈夎凍澶熺殑瀛楃鍒犻櫎鏃訛紝姝ゅ嚱鏁頒笉鎵ц銆?/font></p> <p> <wbr></p> <p><font style="FONT-SIZE: 14px" size=3>3銆丗indOneOf</font></p> <p><font style="FONT-SIZE: 14px"><strong>int</strong> <strong>FindOneOf(</strong> <strong>LPCTSTR</strong> <em>lpszCharSet</em> <strong>)</strong> <strong>const;</strong></font></p> <p><font style="FONT-SIZE: 14px">姝ゅ嚱鏁扮殑鍔熻兘鏄湪鏌ユ壘lpszCharSet涓殑浠繪剰涓涓瓧絎︼紝鏌ュ埌涓涓氨鎶婁綅緗繑鍥烇紝娌℃湁鏌ュ埌榪斿洖0銆傚錛?/font></p> <p><font style="FONT-SIZE: 14px" size=3>CString str = "0123456789";</font></p> <p><font style="FONT-SIZE: 14px" size=3>int x = str.FindOneOf("31");</font></p> <p><font style="FONT-SIZE: 14px" size=3>x鐨勫兼槸1銆?/font></p> <p> <wbr></p> <p><font style="FONT-SIZE: 14px" size=3>4銆丗ind</font></p> <p><font style="FONT-SIZE: 14px"><strong>int</strong> <strong>Find(</strong> <strong>TCHAR</strong> <em>ch</em> <strong>)</strong> <strong>const;</strong></font></p> <p><font style="FONT-SIZE: 14px"><strong>int</strong> <strong>Find(</strong> <strong>LPCTSTR</strong> <em>lpszSub</em> <strong>)</strong> <strong>const;</strong></font></p> <p><font style="FONT-SIZE: 14px"><strong>int Find( TCHAR</strong> <em>ch</em><strong>, int</strong> <em>nStart</em> <strong>) const;</strong></font></p> <p><font style="FONT-SIZE: 14px"><strong>int Find( LPCTSTR</strong> <em>pstr</em><strong>, int</strong> <em>nStart</em> <strong>) const;</strong></font></p> <p><font style="FONT-SIZE: 14px" size=3>榪斿洖鍊兼煡鎵懼埌鐨勫簭鍙鳳紝ch寰呮悳绱㈢殑瀛楃錛宭pszSub寰呮悳绱㈢殑瀛楃瀛愪覆錛宯Start 浠庨偅閲屽紑濮嬫悳绱€傚錛?/font></p> <p><font style="FONT-SIZE: 14px" size=3>CString str = "0123456789";</font></p> <p><font style="FONT-SIZE: 14px" size=3>int x = str.Find("34",4);</font></p> <p><font style="FONT-SIZE: 14px" size=3>榪斿洖鐨勫兼槸-1.</font></p> <p> <wbr></p> <p><font style="FONT-SIZE: 14px" size=3>5銆丟etAt</font></p> <p><font style="FONT-SIZE: 14px"><strong>TCHAR</strong> <strong>GetAt(</strong> <strong>int</strong> <em>nIndex</em> <strong>)</strong> <strong>const;</strong></font></p> <p><font style="FONT-SIZE: 14px">榪斿洖鏍囧彿涓簄Index鐨勫瓧絎︼紝浣犲彲浠ユ妸瀛楃涓茬悊瑙d負(fù)涓涓暟緇勶紝GetAt綾諱技浜嶽].娉ㄦ剰nIndex鐨勮寖鍥達(dá)紝濡傛灉涓嶅悎閫備細(xì)鏈夎皟璇曢敊璇?/font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr></font></p> <p><font style="FONT-SIZE: 14px" size=3>6銆両nsert</font></p> <p><font style="FONT-SIZE: 14px"><strong>int Insert( int</strong> <em>nIndex</em><strong>, TCHAR</strong> <em>ch</em> <strong>)</strong><br><strong>int Insert( int</strong> <em>nIndex</em><strong>, LPCTSTR</strong> <em>pstr</em></font> <font style="FONT-SIZE: 14px"><strong>)<br></strong><strong>榪斿洖淇敼鍚庣殑闀垮害錛?/strong><strong>nIndex</strong><strong>瀛楃錛堟垨瀛楃涓詫級(jí)鎻掑叆鍚庣殑鏍囧彿銆?/strong></font></p> <p> <wbr></p> <p><font style="FONT-SIZE: 14px" size=3>7銆丩eft</font></p> <p><font style="FONT-SIZE: 14px"><strong>CString</strong> <strong>Left(</strong> <strong>int</strong> <em>nCount</em> <strong>)</strong> <strong>const;</strong></font></p> <p><font style="FONT-SIZE: 14px"><strong>榪斿洖鐨勫瓧絎︿覆鐨勫墠</strong><strong>nCount</strong><strong>涓瓧絎︺?/strong></font></p> <p><font style="FONT-SIZE: 14px" size=3>Right涓嶭eft綾諱技</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr></font></p> <p><font style="FONT-SIZE: 14px" size=3>8銆丮akeLower 錛孧akeUpper</font><font style="FONT-SIZE: 14px" size=3>鏀瑰彉瀛楃鐨勫ぇ灝忓啓</font></p> <p><font style="FONT-SIZE: 14px" size=3>MakeReverse瀛楃鍊掔疆錛屽錛?/font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CString str = "X0123456789";</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> str.MakeReverse();</font></p> <p><font style="FONT-SIZE: 14px" size=3>str鍙樹負(fù)"9876543210X"</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr></font></p> <p><font style="FONT-SIZE: 14px" size=3>9銆?=</font></p> <p><font style="FONT-SIZE: 14px"><strong>const</strong> <strong>CString&</strong> <strong>operator</strong> <strong>+=(</strong> <strong>const</strong> <strong>CString&</strong> <em>string</em> <strong>);</strong><br><strong>const</strong> <strong>CString&</strong> <strong>operator</strong> <strong>+=(</strong> <strong>TCHAR</strong> <em>ch</em> <strong>);</strong><br><strong>const</strong> <strong>CString&</strong> <strong>operator</strong> <strong>+=(</strong> <strong>LPCTSTR</strong> <em>lpsz</em> <strong>);</strong></font></p> <p><font style="FONT-SIZE: 14px" size=3>灝嗗弬鏁板悎騫跺埌鑷繁韜笂銆?/font></p> <p><font style="FONT-SIZE: 14px" size=3>濡傦細(xì) <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> CString str = "0123456789";</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>  <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> str+="ha";</font></p> <p><font style="FONT-SIZE: 14px" size=3>str涓?0123456789ha"錛?/font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr></font></p> <p><font style="FONT-SIZE: 14px" size=3>10銆乻tr[]</font></p> <p><font style="FONT-SIZE: 14px"><strong>TCHAR</strong> <strong>operator</strong> <strong>[](</strong> <strong>int</strong> <em>nIndex</em> <strong>)</strong> <strong>const;</strong></font></p> <p><font style="FONT-SIZE: 14px" size=3>璞″鐞嗗瓧絎︽暟緇勪竴鏍峰鐞嗗瓧絎︿覆銆?/font></p> <p><font style="FONT-SIZE: 14px" size=3>娉ㄦ剰鏄彧璇葷殑銆?/font></p> <p><font style="FONT-SIZE: 14px" size=3>CString str = "0123456789";</font></p> <p><font style="FONT-SIZE: 14px" size=3> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> str[0]='x';</font></p> <p><font style="FONT-SIZE: 14px" size=3>鏄敊璇殑銆?/font></p> <p><font style="FONT-SIZE: 14px"> <wbr></font></p> <p align=left><font style="FONT-SIZE: 14px">11銆乀rimLeft,TrimRight</font></p> <p><font style="FONT-SIZE: 14px">void TrimLeft( );</font></p> <p><font style="FONT-SIZE: 14px">void CString::TrimLeft( TCHAR chTarget );</font></p> <p><font style="FONT-SIZE: 14px">void CString::TrimLeft( LPCTSTR lpszTargets );</font></p> <p><font style="FONT-SIZE: 14px">void TrimRight( );</font></p> <p><font style="FONT-SIZE: 14px">void CString::TrimRight( TCHAR chTarget );</font></p> <p><font style="FONT-SIZE: 14px">void CString::TrimRight( LPCTSTR lpszTargets );</font></p> <p align=left><font style="FONT-SIZE: 14px"> <wbr></font></p> <p align=left><font style="FONT-SIZE: 14px">CString str = "\n\t a";</font></p> <p align=left><font style="FONT-SIZE: 14px">str.TrimLeft();</font></p> <p align=left><font style="FONT-SIZE: 14px">str涓?#8220;a”;</font></p> <p><font style="FONT-SIZE: 14px"> <wbr> <wbr> <wbr> <wbr>濡傛灉娌℃湁鍙傛暟,浠庡乏鍒犻櫎瀛楃(\n\t絀烘牸絳?,鑷沖埌閬囧埌涓涓潪姝ょ被瀛楃.</font></p> <p><font style="FONT-SIZE: 14px">褰撶劧浣犱篃鍙互鎸囧畾鍒犻櫎閭d簺瀛楃.</font></p> <p><font style="FONT-SIZE: 14px">濡傛灉鎸囧畾鐨勫弬鏁版槸瀛楃涓?閭d箞閬囦笂鍏朵腑鐨勪竴涓瓧絎﹀氨鍒犻櫎.</font></p> <p align=left><font style="FONT-SIZE: 14px">CString str = "abbcadbabcadb ";</font></p> <p><font style="FONT-SIZE: 14px">str.TrimLeft("ab");</font></p> <p><font style="FONT-SIZE: 14px">緇撴灉"cadbabcadb "</font></p> <p><font style="FONT-SIZE: 14px"> <wbr></font></p> <p align=left><font style="FONT-SIZE: 14px">12銆乮nt CString::Remove( TCHAR ch );</font></p> <p align=left><font style="FONT-SIZE: 14px">ch鍒犻櫎鐨勫瓧絎?</font></p> <p align=left><font style="FONT-SIZE: 14px">榪斿洖鍒犻櫎瀛楃鐨勪釜鏁?鏈夊涓椂閮戒細(xì)鍒犻櫎.</font></p> <p><font style="FONT-SIZE: 14px" size=2> <wbr></font></p> <p><a name=涓庡瓧絎︽暟緇勪箣闂寸殑鐩鎬簰杞崲></a><font style="FONT-SIZE: 22px" size=3> <wbr> 浜屻丆String 涓巆har []涔嬮棿鐨勮漿鎹? <wbr> <wbr></font></p> <p><font style="FONT-SIZE: 14px" size=3>char str[100] = ”str”;</font></p> <p><font style="FONT-SIZE: 14px" size=3>CString sstr = “sstr”;</font></p> <p><font style="FONT-SIZE: 14px" size=3>str.Format(“%s”,str);</font></p> <p><font style="FONT-SIZE: 14px" size=3>str = LPCTSTR sstr;</font></p> <p><font style="FONT-SIZE: 14px" size=3>strcpy(str,(LPCTSTR)sstr);</font></p> <p><font style="FONT-SIZE: 14px">濡傛灉鏄祴鍊?鍒欒:</font></p> <p><font style="FONT-SIZE: 14px">CString s(_T("This is a test "));<br>LPTSTR p = s.GetBuffer();<br>// 鍦ㄨ繖閲屾坊鍔犱嬌鐢╬鐨勪唬鐮?br>if(p != NULL) *p = _T('\0');<br>s.ReleaseBuffer();<br>// 浣跨敤瀹屽悗鍙?qiáng)鏃堕噴鏀惧Q屼互渚胯兘浣跨敤鍏跺畠鐨凜String鎴愬憳鍑芥暟<br></font></p> <p><font style="FONT-SIZE: 14px">str鐨勫煎彉浜?</font></p> <p><font style="FONT-SIZE: 14px"> <wbr></font></p> <p><font style="FONT-SIZE: 14px"><font style="FONT-SIZE: 22px"> <wbr> 涓夈佸皢NULL瀛楄妭鏀懼叆CString涓?br></font>1,CString str("abc\0""def", 7);<br> <wbr> str +="g";<br> <wbr> int nLength = str.GetLength();<br> <wbr> nLength涓?.<br>2,CString str("My name is hedan!");<br> <wbr> str.SetAt(5, 0);<br> <wbr> int nLength = str.GetLength();<br>娉ㄦ剰:涓嶆槸鎵鏈夌殑CString鎴愬憳鍑芥暟閮藉彲浠ワ紝鍦ㄤ嬌鐢ㄦ椂涓瀹氳灝忓績(jī)銆?/font></p> <p><font style="FONT-SIZE: 14px">瀹炰緥:鍔ㄦ侀厤緗暟鎹簮<br>CString strDsn,strDBQ;<br>strDsn = "DSN=test";<br>strDBQ.Format("DBQ=%s",strSourceMDBName);<br>CString strConnect = strDsn + " " + strDBQ ;<br>strConnect.SetAt(strDsn.GetLength(),'\0'); <wbr><br>SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, "Microsoft Access Driver (*.mdb)", strConnect);</font></p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:21 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65379.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Debug鍜孯elease Build錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65378.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:20:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65378.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65378.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65378.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65378.html</trackback:ping><description><![CDATA[Debug鐗堟湰鍖呮嫭璋冭瘯淇℃伅錛屾墍浠ヨ姣擱elease鐗堟湰澶у緢澶氾紙鍙兘澶ф暟鐧綤鑷蟲暟M錛夈? <p> <wbr> <wbr> <wbr> 鑷充簬鏄惁闇瑕丏LL鏀寔錛屼富瑕佺湅浣犻噰鐢ㄧ殑緙栬瘧閫夐」銆傚鏋滄槸鍩轟簬 ATL鐨勶紝鍒橠ebug鍜孯elease鐗堟湰瀵笵LL鐨勮姹傚樊涓嶅銆傚鏋滈噰鐢ㄧ殑緙栬瘧閫夐」涓轟嬌鐢∕FC鍔ㄦ佸簱錛屽垯闇瑕丮FC42D.DLL絳夊簱鏀寔錛岃孯elease鐗堟湰闇瑕丮FC42.DLL鏀寔銆?/p> <p> <wbr> <wbr> <wbr> Release Build涓嶅婧愪唬鐮佽繘琛岃皟璇曪紝涓嶈冭檻MFC鐨勮瘖鏂畯錛屼嬌鐢ㄧ殑鏄疢FC Release搴擄紝緙栬瘧鏃跺搴旂敤紼嬪簭鐨勯熷害榪涜浼樺寲錛岃孌ebug Build鍒欐濂界浉鍙嶏紝瀹冨厑璁稿婧愪唬鐮佽繘琛岃皟璇曪紝鍙互瀹氫箟鍜屼嬌鐢∕FC鐨勮瘖鏂畯錛岄噰鐢∕FC Debug搴擄紝瀵歸熷害娌℃湁浼樺寲銆?nbsp;<wbr> <wbr> <wbr> <wbr><br><br>涓銆丏ebug 鍜?Release 緙栬瘧鏂瑰紡鐨勬湰璐ㄥ尯鍒? <wbr><br> <wbr><br> <wbr> <wbr> <wbr> Debug閫氬父縐頒負(fù)璋冭瘯鐗堟湰錛屽畠鍖呭惈璋冭瘯淇℃伅錛屽茍涓斾笉浣滀換浣曚紭鍖栵紝渚夸簬紼嬪簭鍛樿皟璇曠▼搴忋俁elease 縐頒負(fù)鍙戝竷鐗堟湰錛屽畠寰寰鏄繘琛屼簡(jiǎn)鍚勭浼樺寲錛屼嬌寰楃▼搴忓湪浠g爜澶у皬鍜岃繍琛岄熷害涓婇兘鏄渶浼樼殑錛屼互渚跨敤鎴峰緢濂藉湴浣跨敤銆? <wbr><br> <wbr> <wbr> <wbr> Debug 鍜?nbsp;<wbr>Release 鐨勭湡姝g瀵嗭紝鍦ㄤ簬涓緇勭紪璇戦夐」銆備笅闈㈠垪鍑轟簡(jiǎn)鍒嗗埆閽堝浜岃呯殑閫夐」錛堝綋鐒墮櫎姝や箣澶栬繕鏈夊叾浠栦竴浜涳紝濡?Fd銆?Fo錛屼絾鍖哄埆騫朵笉閲嶈錛岄氬父浠栦滑涔熶笉浼?xì)寮曡? <wbr>Release  <wbr>鐗堥敊璇紝鍦ㄦ涓嶈璁猴級(jí) <wbr> <wbr><br> <wbr> <wbr> <wbr> 1銆丏ebug  <wbr>鐗堟湰錛? <wbr><br>/MDd /MLd <wbr>鎴?/MTd錛氫嬌鐢?Debug runtime library(璋冭瘯鐗堟湰鐨勮繍琛屾椂鍒誨嚱鏁板簱)  <wbr><br>/Od錛氬叧闂紭鍖栧紑鍏? <wbr><br>/D "_DEBUG"錛氱浉褰撲簬 #define _DEBUG,鎵撳紑緙栬瘧璋冭瘯浠g爜寮鍏?涓昏閽堝assert鍑芥暟)  <wbr><br>/ZI錛氬垱寤? <wbr>Edit  <wbr>and  <wbr>continue(緙栬緫緇х畫)鏁版嵁搴擄紝榪欐牱鍦ㄨ皟璇曡繃紼嬩腑濡傛灉淇敼浜?jiǎn)婧愪唬鐮佷笉闇閲嶆柊緙栬瘧  <wbr><br>/GZ錛氬彲浠ュ府鍔╂崟鑾峰唴瀛橀敊璇? <wbr><br>/Gm錛氭墦寮鏈灝忓寲閲嶉摼鎺ュ紑鍏籌紝鍑忓皯閾炬帴鏃墮棿 <wbr> <wbr><br> <wbr> <wbr> <wbr> 2銆丷elease  <wbr>鐗堟湰錛? <wbr>  <wbr><br>/MD /ML 鎴?nbsp;<wbr>/MT  <wbr>浣跨敤鍙戝竷鐗堟湰鐨勮繍琛屾椂鍒誨嚱鏁板簱  <wbr><br>/O1 <wbr>鎴?/O2錛氫紭鍖栧紑鍏籌紝浣跨▼搴忔渶灝忔垨鏈蹇? <wbr><br>/D "NDEBUG"錛氬叧闂潯浠剁紪璇戣皟璇曚唬鐮佸紑鍏?鍗充笉緙栬瘧assert鍑芥暟)  <wbr><br>/GF錛氬悎騫墮噸澶嶇殑瀛楃涓詫紝騫跺皢瀛楃涓插父閲忔斁鍒板彧璇誨唴瀛橈紝闃叉琚慨鏀?nbsp;<wbr> <wbr><br> <wbr> <wbr> <wbr> 瀹為檯涓婏紝Debug  <wbr>鍜? <wbr>Release  <wbr>騫舵病鏈夋湰璐ㄧ殑鐣岄檺錛屼粬浠彧鏄竴緇勭紪璇戦夐」鐨勯泦鍚堬紝緙栬瘧鍣ㄥ彧鏄寜鐓ч瀹氱殑閫夐」琛屽姩銆備簨瀹炰笂錛屾垜浠敋鑷沖彲浠ヤ慨鏀硅繖浜涢夐」錛屼粠鑰屽緱鍒頒紭鍖栬繃鐨勮皟璇曠増鏈垨鏄甫璺熻釜璇彞鐨勫彂甯冪増鏈? <wbr><br> <wbr><br>浜屻佸摢浜涙儏鍐典笅  <wbr>Release  <wbr>鐗堜細(xì)鍑洪敊  <wbr><br> <wbr><br> <wbr> <wbr> <wbr> 鏈変簡(jiǎn)涓婇潰鐨勪粙緇嶏紝鎴戜滑鍐嶆潵閫愪釜瀵圭収榪欎簺閫夐」鐪嬬湅  <wbr>Release  <wbr>鐗堥敊璇槸鎬庢牱浜х敓鐨勩?/p> <p> <wbr><br> <wbr> <wbr> <wbr> 1.Runtime Library錛?/p> <p>閾炬帴鍝榪愯鏃跺埢鍑芥暟搴撻氬父鍙紼嬪簭鐨勬ц兘浜х敓褰卞搷銆傝皟璇曠増鏈殑Runtime Library 鍖呭惈浜?jiǎn)璋冭瘯淇℃伅锛岒q墮噰鐢ㄤ簡(jiǎn)涓浜涗繚鎶ゆ満鍒朵互甯姪鍙戠幇閿欒錛屽洜姝ゆц兘涓嶅鍙戝竷鐗堟湰銆傜紪璇戝櫒鎻愪緵鐨?Runtime Library 閫氬父寰堢ǔ瀹氾紝涓嶄細(xì)閫犳垚 <wbr>Release 鐗堥敊璇紱鍊掓槸鐢變簬 Debug 鐨?Runtime <wbr>Library <wbr>鍔犲己浜?jiǎn)瀵归敊璇殑妫嫻嬶紝濡傚爢鍐呭瓨鍒嗛厤錛屾湁鏃朵細(xì)鍑虹幇 Debug 鏈夐敊浣?nbsp;<wbr>Release 姝e父鐨勭幇璞°傚簲褰撴寚鍑虹殑鏄紝濡傛灉 Debug <wbr>鏈夐敊錛屽嵆 <wbr>Release  <wbr>姝e父錛岀▼搴忚偗瀹氭槸鏈?nbsp;<wbr>Bug <wbr>鐨勶紝鍙笉榪囧彲鑳芥槸 Release <wbr>鐗堢殑鏌愭榪愯娌℃湁琛ㄧ幇鍑烘潵鑰屽凡銆?nbsp;<wbr></p> <p> <wbr><br> <wbr> <wbr> <wbr> 2.浼樺寲錛?/p> <p>榪欐槸閫犳垚閿欒鐨勪富瑕佸師鍥狅紝鍥犱負(fù)鍏抽棴浼樺寲鏃舵簮紼嬪簭鍩烘湰涓婃槸鐩存帴緲昏瘧鐨勶紝鑰屾墦寮浼樺寲鍚庣紪璇戝櫒浼?xì)浣滃囖Z竴緋誨垪鍋囪銆傝繖綾婚敊璇富瑕佹湁浠ヤ笅鍑犵錛?/p> <p>(1)  <wbr>甯ф寚閽?Frame Pointer)鐪佺暐錛堢畝縐癋PO錛夛細(xì)</p> <p>鍦ㄥ嚱鏁拌皟鐢ㄨ繃紼嬩腑錛屾墍鏈夎皟鐢ㄤ俊鎭紙榪斿洖鍦板潃銆佸弬鏁幫級(jí)浠ュ強(qiáng)鑷姩鍙橀噺閮芥槸鏀懼湪鏍堜腑鐨勩傝嫢鍑芥暟鐨勫0鏄庝笌瀹炵幇涓嶅悓錛堝弬鏁般佽繑鍥炲箋佽皟鐢ㄦ柟寮忥級(jí)錛屽氨浼?xì)漶旂敓閿欒銆備絾 Debug 鏂瑰紡涓嬶紝鏍堢殑璁塊棶閫氳繃  <wbr>EBP  <wbr>瀵勫瓨鍣ㄤ繚瀛樼殑鍦板潃瀹炵幇錛屽鏋滄病鏈夊彂鐢熸暟緇勮秺鐣屼箣綾葷殑閿欒錛堟垨鏄秺鐣?#8220;涓嶅”錛夛紝鍑芥暟閫氬父鑳芥甯告墽琛屻俁elease 鏂瑰紡涓嬶紝浼樺寲浼?xì)鐪佺?EBP 鏍堝熀鍧鎸囬拡錛岃繖鏍烽氳繃涓涓叏灞鎸囬拡璁塊棶鏍堝氨浼?xì)閫犳垚榪斿洖鍦板潃閿欒鏄▼搴忓穿婧冦侰++ 鐨勫己綾誨瀷鐗規(guī)ц兘媯(gè)鏌ュ嚭澶у鏁拌繖鏍風(fēng)殑閿欒錛屼絾濡傛灉鐢ㄤ簡(jiǎn)寮哄埗綾誨瀷杞崲錛屽氨涓嶈浜?jiǎn)銆備綘鍙互鍦?Release 鐗堟湰涓己鍒跺姞鍏?/Oy- 緙栬瘧閫夐」鏉ュ叧鎺夊撫鎸囬拡鐪佺暐錛屼互紜畾鏄惁姝ょ被閿欒銆?/p> <p>姝ょ被閿欒閫氬父鏈夛細(xì) <wbr></p> <p>MFC 娑堟伅鍝嶅簲鍑芥暟涔﹀啓閿欒銆?/p> <p>姝g‘鐨勫簲涓? <wbr><br>afx_msg  <wbr>LRESULT  <wbr>OnMessageOwn(WPARAM  <wbr>wparam,  <wbr>LPARAM  <wbr>lparam);  <wbr><br>ON_MESSAGE  <wbr>瀹忓寘鍚己鍒剁被鍨嬭漿鎹€傞槻姝㈣繖縐嶉敊璇殑鏂規(guī)硶涔嬩竴鏄噸瀹氫箟 ON_MESSAGE 瀹忥紝鎶婁笅鍒椾唬鐮佸姞鍒?stdafx.h 涓紙鍦?include "afxwin.h"涔嬪悗錛?鍑芥暟鍘熷艦閿欒鏃剁紪璇戜細(xì)鎶ラ敊  <wbr><br>#undef ON_MESSAGE  <wbr><br>#define ON_MESSAGE(message, <wbr>memberFxn) \  <wbr><br>{ <wbr>message, 0, <wbr>0, <wbr>0, AfxSig_lwl, \  <wbr><br>(AFX_PMSG)(AFX_PMSGW)(static_cast< <wbr>LRESULT (AFX_MSG_CALL \  <wbr><br>CWnd::*)(WPARAM, LPARAM) <wbr>> (&memberFxn) <wbr>}, <wbr> <wbr><br>(2)  <wbr>volatile  <wbr>鍨嬪彉閲忥細(xì)</p> <p>volatile 鍛婅瘔緙栬瘧鍣ㄨ鍙橀噺鍙兘琚▼搴忎箣澶栫殑鏈煡鏂瑰紡淇敼錛堝緋葷粺銆佸叾浠栬繘紼嬪拰綰跨▼錛夈備紭鍖栫▼搴忎負(fù)浜?jiǎn)鋴山E嬪簭鎬ц兘鎻愰珮錛屽父鎶婁竴浜涘彉閲忔斁鍦ㄥ瘎瀛樺櫒涓紙綾諱技浜?register 鍏抽敭瀛楋級(jí)錛岃屽叾浠栬繘紼嬪彧鑳藉璇ュ彉閲忔墍鍦ㄧ殑鍐呭瓨榪涜淇敼錛岃屽瘎瀛樺櫒涓殑鍊兼病鍙樸傚鏋滀綘鐨勭▼搴忔槸澶氱嚎紼嬬殑錛屾垨鑰呬綘鍙戠幇鏌愪釜鍙橀噺鐨勫間笌棰勬湡鐨勪笉絎﹁屼綘紜俊宸叉紜殑璁劇疆浜?jiǎn)锛屽垯寰堝彲鑳介亣鍒皹q欐牱鐨勯棶棰樸傝繖縐嶉敊璇湁鏃朵細(xì)琛ㄧ幇涓虹▼搴忓湪鏈蹇紭鍖栧嚭閿欒屾渶灝忎紭鍖栨甯搞傛妸浣犺涓哄彲鐤戠殑鍙橀噺鍔犱笂 volatile 璇曡瘯銆?nbsp;<wbr> <wbr><br>(3)  <wbr>鍙橀噺浼樺寲錛?/p> <p>浼樺寲紼嬪簭浼?xì)鏍规嵁鍙橀噺鐨勪娇鐢ㄦ儏鍐典紭鍖栧彉閲忋備緥濡傦紝鍑芥暟涓湁涓涓湭琚嬌鐢ㄧ殑鍙橀噺錛屽湪 <wbr>Debug <wbr>鐗堜腑瀹冩湁鍙兘鎺╃洊涓涓暟緇勮秺鐣岋紝鑰屽湪 Release 鐗堜腑錛岃繖涓彉閲忓緢鍙兘琚紭鍖栵紝姝ゆ椂鏁扮粍瓚婄晫浼?xì)鐮村潖鏍堜腑鏈夌敤鐨勬暟鎹傚綋鐒?dòng)灱屽疄闄呯殑鎯呭喌浼?xì)姣旇繖澶嶆潅寰楀銆備笌姝ゆ湁鍏崇殑閿欒鏈夛細(xì) <wbr> <wbr><br>闈炴硶璁塊棶錛屽寘鎷暟緇勮秺鐣屻佹寚閽堥敊璇瓑銆備緥濡? <wbr><br>void  <wbr>fn(void)  <wbr><br>{  <wbr><br> <wbr> <wbr> <wbr> int  <wbr>i;  <wbr><br> <wbr> <wbr> <wbr> i  <wbr>=  <wbr>1;  <wbr><br> <wbr> <wbr> <wbr> int  <wbr>a[4];  <wbr><br> <wbr> <wbr> <wbr> {  <wbr><br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> int  <wbr>j;  <wbr><br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> j  <wbr>=  <wbr>1;  <wbr><br> <wbr> <wbr> <wbr> }  <wbr><br> <wbr> <wbr> <wbr> a[-1]  <wbr>=  <wbr>1;//褰撶劧閿欒涓嶄細(xì)榪欎箞鏄庢樉錛屼緥濡備笅鏍囨槸鍙橀噺  <wbr><br> <wbr> <wbr> <wbr> a[4]  <wbr>=  <wbr>1;  <wbr><br>}  <wbr><br>j 铏界劧鍦ㄦ暟緇勮秺鐣屾椂宸插嚭浜?jiǎn)浣滅敤鍩熷Q屼絾鍏剁┖闂村茍鏈敹鍥烇紝鍥犺?i <wbr>鍜?j 灝變細(xì)鎺╃洊瓚婄晫銆傝?nbsp;<wbr>Release <wbr>鐗堢敱浜?nbsp;<wbr>i銆乯 騫舵湭鍏跺緢澶т綔鐢ㄥ彲鑳戒細(xì)琚紭鍖栨帀錛屼粠鑰屼嬌鏍堣鐮村潖銆?nbsp;<wbr> <wbr></p> <p><br>3. _DEBUG 涓?NDEBUG錛?/p> <p>褰撳畾涔変簡(jiǎn) <wbr>_DEBUG 鏃訛紝assert() <wbr>鍑芥暟浼?xì)琚~栬瘧錛岃?NDEBUG <wbr>鏃朵笉琚紪璇戙傞櫎姝や箣澶栵紝VC++涓繕鏈変竴緋誨垪鏂█瀹忋傝繖鍖呮嫭錛?nbsp;<wbr> <wbr><br>ANSI C 鏂█ void assert(int expression );  <wbr><br>C Runtime Lib 鏂█ _ASSERT( booleanExpression );  <wbr><br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> _ASSERTE( booleanExpression );  <wbr><br>MFC  <wbr>鏂█  <wbr>ASSERT(  <wbr>booleanExpression  <wbr>);  <wbr><br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> VERIFY(  <wbr>booleanExpression  <wbr>); <wbr> <wbr><br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ASSERT_VALID(  <wbr>pObject  <wbr>);  <wbr><br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ASSERT_KINDOF(  <wbr>classname,  <wbr>pobject  <wbr>);  <wbr><br>ATL  <wbr>鏂█  <wbr>ATLASSERT(  <wbr>booleanExpression  <wbr>);  <wbr><br>姝ゅ錛孴RACE()  <wbr>瀹忕殑緙栬瘧涔熷彈  <wbr>_DEBUG  <wbr>鎺у埗銆?nbsp;<wbr> <wbr><br> <wbr> <wbr> <wbr> 鎵鏈夎繖浜涙柇璦閮藉彧鍦? <wbr>Debug鐗堜腑鎵嶈緙栬瘧錛岃屽湪  <wbr>Release  <wbr>鐗堜腑琚拷鐣ャ傚敮涓鐨勪緥澶栨槸  <wbr>VERIFY() 銆備簨瀹炰笂錛岃繖浜涘畯閮芥槸璋冪敤浜? <wbr>assert()  <wbr>鍑芥暟錛屽彧涓嶈繃闄勫姞浜?jiǎn)涓浜涗笌搴撴湁鍏崇殑璋冭瘯浠g爜銆傚鏋滀綘鍦ㄨ繖浜涘畯涓姞鍏ヤ簡(jiǎn)浠諱綍紼嬪簭浠g爜錛岃屼笉鍙槸甯冨皵琛ㄨ揪寮忥紙渚嬪璧嬪箋佽兘鏀瑰彉鍙橀噺鍊肩殑鍑芥暟璋冪敤絳夛級(jí)錛岄偅涔? <wbr>Release  <wbr>鐗堥兘涓嶄細(xì)鎵ц榪欎簺鎿嶄綔錛屼粠鑰岄犳垚閿欒銆傚垵瀛﹁呭緢瀹規(guī)槗鐘繖綾婚敊璇紝鏌ユ壘鐨勬柟娉曚篃寰堢畝鍗曪紝鍥犱負(fù)榪欎簺瀹忛兘宸插湪涓婇潰鍒楀嚭錛屽彧瑕佸埄鐢? <wbr>VC++  <wbr>鐨? <wbr>Find  <wbr>in  <wbr>Files 鍔熻兘鍦ㄥ伐紼嬫墍鏈夋枃浠朵腑鎵懼埌鐢ㄨ繖浜涘畯鐨勫湴鏂瑰啀涓涓媯(gè)鏌ュ嵆鍙傚彟澶栵紝鏈変簺楂樻墜鍙兘榪樹細(xì)鍔犲叆  <wbr>#ifdef  <wbr>_DEBUG  <wbr>涔嬬被鐨勬潯浠剁紪璇戯紝涔熻娉ㄦ剰涓涓嬨? <wbr><br> <wbr> <wbr> <wbr> 欏轟究鍊煎緱涓鎻愮殑鏄? <wbr>VERIFY()  <wbr>瀹忥紝榪欎釜瀹忓厑璁鎬綘灝嗙▼搴忎唬鐮佹斁鍦ㄥ竷?yōu)當(dāng)琛ㄨ緫旨忛噷銆傝繖涓畯閫氬父鐢ㄦ潵媯(gè)鏌? <wbr>Windows  <wbr>API  <wbr>鐨勮繑鍥炲箋傛湁浜涗漢鍙兘涓鴻繖涓師鍥犺屾互鐢?nbsp;<wbr>VERIFY() 錛屼簨瀹炰笂榪欐槸鍗遍櫓鐨勶紝鍥犱負(fù) <wbr>VERIFY() 榪濆弽浜?jiǎn)鏂a鐨勬濇兂錛屼笉鑳戒嬌紼嬪簭浠g爜鍜岃皟璇曚唬鐮佸畬鍏ㄥ垎紱伙紝鏈緇堝彲鑳戒細(xì)甯︽潵寰堝楹葷儲(chǔ)銆傚洜姝わ紝涓撳浠緩璁敖閲忓皯鐢ㄨ繖涓畯銆?nbsp;<wbr> <wbr></p> <p><br>4.  <wbr>/GZ  <wbr>閫夐」錛?/p> <p>榪欎釜閫夐」浼?xì)鍋氫互涓嫎q欎簺浜?nbsp;<wbr>錛?nbsp;<wbr><br>(1)  <wbr>鍒濆鍖栧唴瀛樺拰鍙橀噺銆?/p> <p>鍖呮嫭鐢? <wbr>0xCC  <wbr>鍒濆鍖栨墍鏈夎嚜鍔ㄥ彉閲忥紝0xCD  <wbr>(  <wbr>Cleared  <wbr>Data  <wbr>)  <wbr>鍒濆鍖栧爢涓垎閰嶇殑鍐呭瓨錛堝嵆鍔ㄦ佸垎閰嶇殑鍐呭瓨錛屼緥濡? <wbr>new  <wbr>錛夛紝0xDD  <wbr>(  <wbr>Dead  <wbr>Data  <wbr>)  <wbr>濉厖宸茶閲婃斁鐨勫爢鍐呭瓨錛堜緥濡? <wbr>delete  <wbr>錛夛紝0xFD(  <wbr>deFencde  <wbr>Data  <wbr>)  <wbr>鍒濆鍖栧彈淇濇姢鐨勫唴瀛橈紙debug  <wbr>鐗堝湪鍔ㄦ佸垎閰嶅唴瀛樼殑鍓嶅悗鍔犲叆淇濇姢鍐呭瓨浠ラ槻姝㈣秺鐣岃闂級(jí)錛屽叾涓嫭鍙蜂腑鐨勮瘝鏄井杞緩璁殑鍔╄璇嶃傝繖鏍峰仛鐨勫ソ澶勬槸榪欎簺鍊奸兘寰堝ぇ錛屼綔涓烘寚閽堟槸涓嶅彲鑳界殑錛堣屼笖  <wbr>32  <wbr>浣嶇郴緇熶腑鎸囬拡寰堝皯鏄鏁板鹼紝鍦ㄦ湁浜涚郴緇熶腑濂囨暟鐨勬寚閽堜細(xì)浜х敓榪愯鏃墮敊璇級(jí)錛屼綔涓烘暟鍊間篃寰堝皯閬囧埌錛岃屼笖榪欎簺鍊間篃寰堝鏄撹鯨璁わ紝鍥犳榪欏緢鏈夊埄浜庡湪  <wbr>Debug  <wbr>鐗堜腑鍙戠幇  <wbr>Release  <wbr>鐗堟墠浼?xì)閬囧埌鐨勯敊璇傝鐗瑰埆娉ㄦ剰鐨勬槸錛屽緢澶氫漢璁や負(fù)緙栬瘧鍣ㄤ細(xì)鐢? <wbr>0  <wbr>鏉ュ垵濮嬪寲鍙橀噺錛岃繖鏄敊璇殑錛堣屼笖榪欐牱寰堜笉鍒╀簬鏌ユ壘閿欒錛夈? <wbr><br>(2)  <wbr>閫氳繃鍑芥暟鎸囬拡璋冪敤鍑芥暟鏃訛紝浼?xì)閫氳繃媯(gè)鏌ユ爤鎸囬拡楠岃瘉鍑芥暟璋冪敤鐨勫尮閰嶆с傦紙闃叉鍘熷艦涓嶅尮閰嶏級(jí)  <wbr><br>(3)  <wbr>鍑芥暟榪斿洖鍓嶆鏌ユ爤鎸囬拡錛岀‘璁ゆ湭琚慨鏀廣傦紙闃叉瓚婄晫璁塊棶鍜屽師褰笉鍖歸厤錛屼笌絎簩欏瑰悎鍦ㄤ竴璧峰彲澶ц嚧妯℃嫙甯ф寚閽堢渷鐣? <wbr>FPO  <wbr>錛?nbsp;<wbr> <wbr><br> <wbr> <wbr> <wbr> 閫氬父  <wbr>/GZ  <wbr>閫夐」浼?xì)閫犳垚  <wbr>Debug  <wbr>鐗堝嚭閿欒? <wbr>Release  <wbr>鐗堟甯哥殑鐜拌薄錛屽洜涓? <wbr>Release  <wbr>鐗堜腑鏈垵濮嬪寲鐨勫彉閲忔槸闅忔満鐨勶紝榪欐湁鍙兘浣挎寚閽堟寚鍚戜竴涓湁鏁堝湴鍧鑰屾帺鐩栦簡(jiǎn)闈炴硶璁塊棶銆?nbsp;<wbr> <wbr><br><br> <wbr> <wbr> <wbr> 闄ゆ涔嬪錛?Gm  <wbr>/GF  <wbr>絳夐夐」閫犳垚閿欒鐨勬儏鍐墊瘮杈冨皯錛岃屼笖浠栦滑鐨勬晥鏋滄樉鑰屾槗瑙侊紝姣旇緝瀹規(guī)槗鍙戠幇銆?nbsp;<wbr> <wbr><br></p> <p>綆鐭湴璇達(dá)細(xì)<br> <wbr> <wbr> <wbr> Release鏄彂琛岀増鏈?姣擠ebug鐗堟湰鏈変竴浜涗紭鍖栵紝鏂囦歡姣擠ebug鏂囦歡灝忋侱ebug鏄皟璇曠増鏈紝鍖呮嫭鐨勭▼搴忎俊鎭洿澶氥俁elease鏂規(guī)硶錛?build->batch錛宐uild->build灝監(jiān)K. <wbr>鍙湁DEBUG鐗堢殑紼嬪簭鎵嶈兘璁劇疆鏂偣銆佸崟姝ユ墽琛屻佷嬌鐢═RACE/ASSERT絳夎皟璇曡緭鍑?guó)櫙彞銆俁EALEASE涓嶅寘鍚換浣曡皟璇曚俊鎭紝鎵浠ヤ綋縐皬銆佽繍琛岄熷害蹇?/p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:20 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65378.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍑芥暟鎸囬拡錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65377.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:20:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65377.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65377.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65377.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65377.html</trackback:ping><description><![CDATA[<p>1銆佸嚱鏁版寚閽堝悓鏍鋒槸鍙互浣滀負(fù)鍙傛暟浼犻掔粰鍑芥暟鐨勩?/p> <p class="code">#include <wbr><iostream> <wbr> <wbr> <wbr><br />#include <wbr><string> <wbr> <wbr> <wbr><br />using <wbr>namespace <wbr>std; <wbr> <wbr> <wbr> <wbr> <wbr><br />int <wbr>test(int); <wbr> <wbr> <wbr> <wbr><br />int <wbr>test2(int <wbr>(*ra)(int),int); <wbr><br />void <wbr>main(int <wbr>argc,char* <wbr>argv[]) <wbr> <wbr> <wbr> <wbr> <wbr><br />{ <wbr> <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr>cout<<test<<endl; <wbr><br /> <wbr> <wbr> <wbr> <wbr>typedef <wbr>int <wbr>(*fp)(int); <wbr> <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr>fp <wbr>fpi; <wbr><br /> <wbr> <wbr> <wbr> <wbr>fpi=test; <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr>cout<<test2(fpi,1)<<endl;<br /> <wbr> <wbr> <wbr> <wbr>cin.get(); <wbr><br />} <wbr> <wbr> <wbr> <wbr><br />int <wbr>test(int <wbr>a) <wbr><br />{ <wbr> <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr>return <wbr>a-1; <wbr><br />} <wbr><br />int <wbr>test2(int <wbr>(*ra)(int),int <wbr>b)//榪欓噷瀹氫箟浜?jiǎn)涓涓悕瀛椾負(fù)ra鐨勫嚱鏁版寚閽?nbsp;<wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>int <wbr>c=ra(10)+b;//鍦ㄨ皟鐢ㄤ箣鍚?ra宸茬粡鎸囧悜fpi鎵鎸囧悜鐨勫嚱鏁板湴鍧鍗硉est鍑芥暟 <wbr><br /> <wbr> <wbr> <wbr> <wbr>return <wbr>c; <wbr><br />}</p> <p>2銆佸埄鐢ㄥ嚱鏁版寚閽堬紝鎴戜滑鍙互鏋勬垚鎸囬拡鏁扮粍錛屾洿鏄庣‘鐐圭殑璇存硶鏄瀯鎴愭寚鍚戝嚱鏁扮殑鎸囬拡鏁扮粍錛岃繖涔堣鍙兘灝卞鏄撶悊瑙g殑澶氫簡(jiǎn)銆?/p> <p class="code">#include <wbr><iostream> <wbr> <wbr> <wbr><br />#include <wbr><string> <wbr> <wbr> <wbr><br />using <wbr>namespace <wbr>std; <wbr><br />void <wbr>t1(){cout<<"test1";} <wbr><br />void <wbr>t2(){cout<<"test2";} <wbr><br />void <wbr>t3(){cout<<"test3";} <wbr><br />void <wbr>main(int <wbr>argc,char* <wbr>argv[]) <wbr> <wbr> <wbr> <wbr> <wbr><br />{ <wbr><br /> <wbr> <wbr> <wbr> <wbr>void* <wbr>a[]={t1,t2,t3}; <wbr><br /> <wbr> <wbr> <wbr> <wbr>cout<<"姣旇緝t1()鐨勫唴瀛樺湴鍧鍜屾暟緇刟[0]鎵瀛樺偍鐨勫湴鍧鏄惁涓鑷?<<t1<<"|"<<a[0]<<endl; <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr>cout<<a[0]();//閿欒!鎸囬拡鏁扮粍鏄笉鑳藉埄鐢ㄦ暟緇勪笅鏍囨搷浣滆皟鐢ㄥ嚱鏁扮殑 <wbr> <wbr><br /> <wbr> <wbr> <wbr> <wbr>typedef <wbr>void <wbr>(*fp)();//鑷畾涔変竴涓嚱鏁版寚閽堢被鍨?nbsp;<wbr><br /> <wbr> <wbr> <wbr> <wbr>fp <wbr>b[]={t1,t2,t3}; <wbr>//鍒╃敤鑷畾涔夌被鍨媐p鎶奲[]瀹氫箟鎴愪竴涓寚鍚戝嚱鏁扮殑鎸囬拡鏁扮粍 <wbr><br /> <wbr> <wbr> <wbr> <wbr>b[0]();//鐜板湪鍒╃敤鎸囧悜鍑芥暟鐨勬寚閽堟暟緇勮繘琛屼笅鏍囨搷浣滃氨鍙互榪涜鍑芥暟鐨勯棿鎺ヨ皟鐢ㄤ簡(jiǎn); <wbr><br /> <wbr> <wbr> <wbr> <wbr>cin.get(); <wbr><br />}</p> <p class="code">鍙﹀錛?/p> <p class="code">void* a[]={t1,t2,t3};<br />cout<<"姣旇緝t1()鐨勫唴瀛樺湴鍧鍜屾暟緇刟[0]鎵瀛樺偍鐨勫湴鍧鏄惁涓鑷?<<t1<<"|"<<a[0]<<endl;<br />cout<<a[0]();</p> <p>涓婇潰鐨勮繖涓灝忔涓殑閿欒琛岋紝涓轟粈涔堜笉鑳借繖涔堣皟鐢ㄥ憿錛熸寚閽堟暟緇勫厓绱犳墍淇濆瓨鐨勫彧鏄竴涓唴瀛樺湴鍧錛屾棦鐒跺彧鏄釜鍐呭瓨鍦板潃灝變笉鍙兘榪涜a[0]()榪欐牱鍦板潃甯︽嫭鍙風(fēng)殑鎿嶄綔錛岃屽嚱鏁版寚閽堜笉鍚岋紝瀹冩槸涓涓緥澶栵紝鍑芥暟鎸囬拡鍙墍浠ヨ繖涔堝彨瀹冨氨鏄洜涓哄畠鏄寚鍚戝嚱鏁版寚鍚戝唴瀛樼殑浠g爜鍖虹殑鎸囬拡錛屽畠琚郴緇熸巿浜堝厑璁鎬笌()鎷彿鎿嶄綔鐨勬潈鍒╋紝榪涜<strong>闂存帴鐨勫嚱鏁拌皟鐢?/strong>錛屾棦鐒跺嚱鏁版寚閽堝厑璁歌繖涔堟搷浣滐紝閭d箞琚畾涔夋垚鍑芥暟鎸囬拡鐨勬暟緇勫氨涓瀹氭槸鍙互涓鏍風(fēng)殑鎿嶄綔鐨勩?/p> <p> <wbr></p> <p>3銆佺被鐨勬垚鍛樺嚱鏁幫細(xì)</p> <p><span><span>class CA<br />{<br /> <wbr>public:<br /> <wbr> <wbr> <wbr> char lcFun(int a){ return; }<br />};<br />CA ca;<br />typedef char (CA::*PTRFUN)(int);<br />PTRFUN pFun;<br />void main()<br />{<br /> <wbr> <wbr> <wbr> pFun = CA::lcFun;<br /> <wbr> <wbr> <wbr> ca.(*pFun)(2);<br />}</span> <span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US"><br /><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鍦ㄨ繖閲岋紝鎸囬拡鐨勫畾涔変笌浣跨敤閮藉姞涓婁簡(jiǎn)</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">“</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">綾婚檺鍒?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">”</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鎴?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">“</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">瀵硅薄</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">”</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">錛岀敤鏉ユ寚鏄庢寚閽堟寚鍚戠殑鍑芥暟鏄偅涓被鐨勮繖閲岀殑綾誨璞′篃鍙互鏄嬌鐢?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">new</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">寰楀埌鐨勩傛瘮濡傦細(xì)</span> <span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US"><br />CA *pca = new CA;<br />pca->(*pFun)(2);<br />delete pca;<br /></span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鑰屼笖榪欎釜綾誨璞℃寚閽堝彲浠ユ槸綾誨唴閮ㄦ垚鍛樺彉閲忥紝浣犵敋鑷沖彲浠ヤ嬌鐢?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">this</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鎸囬拡銆傛瘮濡傦細(xì)</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US"><br /></span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">綾?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">CA</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鏈夋垚鍛樺彉閲?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">PTRFUN m_pfun;<br />void CA::lcFun2()<br />{ <wbr><br /> <wbr> <wbr> (this->*m_pFun)(2);<br />}<br /></span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">涓鍙ヨ瘽錛屼嬌鐢ㄧ被鎴愬憳鍑芥暟鎸囬拡蹇呴』鏈?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">“->*”</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鎴?/span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'" xml:lang="EN-US">“.*”</span><span style="font-size: 10.5pt; font-family: 瀹嬩綋">鐨勮皟鐢ㄣ?/span></span></span></p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:20 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65377.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>typedef錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65376.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:19:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65376.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65376.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65376.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65376.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65376.html</trackback:ping><description><![CDATA[<p>涓銆佸熀鏈敤娉曪細(xì)</p> <p align=left>1銆佹櫘閫氱被鍨?/p> <p align=left>typedef unsigned int UINT;</p> <p align=left>2銆乻truct</p> <p align=left>typedef struct {int x; int y;} Point;</p> <p align=left>鎴栬?/p> <p align=left>typedef struct t_node {</p> <p align=left> <wbr> <wbr> <wbr> int Value;</p> <p align=left> <wbr> <wbr> <wbr> struct t_node *next;</p> <p align=left>} Node;</p> <p align=left>鎴栬?/p> <p align=left>typedef strcut t_node Node;</p> <p align=left>struct t_node {</p> <p align=left> <wbr> <wbr> <wbr> int Value;</p> <p align=left> <wbr> <wbr> <wbr> Node *next;</p> <p align=left>};</p> <p align=left>3銆佸嚱鏁版寚閽?/p> <p align=left>typedef void (*FUNCADDR)(int);</p> <p align=left>4銆佺被綾誨瀷</p> <p align=left>typedef class {</p> <p align=left> <wbr> <wbr> <wbr> private:</p> <p align=left> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> int a;</p> <p align=left> <wbr> <wbr> <wbr> public:</p> <p align=left> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> int b;</p> <p align=left>} MyClass;</p> <p align=left> <wbr></p> <p align=left>浜屻佹繁鍏ヨ璁猴細(xì)</p> <p align=left><strong><u>1銆佸叧浜巆onst 鍜屾寚閽?/u></strong></p> <p align=left>typedef char * pstr;<br>int mystrcmp(pstr, pstr);<br>銆銆榪欓噷灝嗗甫鎴戜滑鍒拌揪絎竴涓?typedef 闄烽槺銆傛爣鍑嗗嚱鏁?strcmp()鏈変袱涓?#8216;const char *'綾誨瀷鐨勫弬鏁般傚洜姝わ紝瀹冨彲鑳戒細(xì)璇浜轟滑璞′笅闈㈣繖鏍峰0鏄?mystrcmp()錛?/p> <p align=left>int mystrcmp(const pstr, const pstr);<br>銆銆榪欐槸閿欒鐨勶紝鎸夌収欏哄簭錛?#8216;const pstr'琚В閲婁負(fù)‘char * const'錛堜竴涓寚鍚?char 鐨勫父閲忔寚閽堬級(jí)錛岃屼笉鏄?#8216;const char *'錛堟寚鍚戝父閲?char 鐨勬寚閽堬級(jí)銆?/p> <p align=left> <wbr> <wbr> <wbr> 榪欎釜闂寰堝鏄撹В鍐籌細(xì)</p> <p align=left>typedef const char * cpstr;<br>int mystrcmp(cpstr, cpstr); // 鐜板湪鏄紜殑</p> <p align=left>2銆佹枃鏈浛鎹?/p> <p align=left> <wbr> <wbr> <wbr> typedef 琛屼負(fù)鏈夌偣鍍?nbsp;<wbr>#define <wbr>瀹忥紝鐢ㄥ叾瀹為檯綾誨瀷鏇夸唬鍚屼箟瀛椼備笉鍚岀偣鏄?typedef 鍦ㄧ紪璇戞椂琚В閲婏紝鍥犳璁╃紪璇戝櫒鏉ュ簲浠樿秴瓚婇澶勭悊鍣ㄨ兘鍔涚殑鏂囨湰鏇挎崲銆?/p> <p align=left>渚嬪:</p> <p align=left>typedef int <wbr>(*PF) <wbr>(const char <wbr>*, const char <wbr>*);</p> <p align=left>濡傛灉瑕佷嬌鐢ㄤ笅鍒楀艦寮忕殑鍑芥暟澹版槑錛岄偅涔堜笂榪拌繖涓?typedef 鏄笉鍙垨緙虹殑錛?/p> <p align=left>PF Register(PF pf);<br>灞曠ず涓涓嬪鏋滀笉鐢?typedef錛屾垜浠槸濡備綍瀹炵幇榪欎釜澹版槑鐨勶細(xì)</p> <p align=left>int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);<br>3銆佸瓨鍌ㄧ被鍏抽敭瀛?/p> <p align=left> <wbr> <wbr> <wbr> typedef 灝卞儚 auto錛宔xtern錛宮utable錛宻tatic錛屽拰 register 涓鏍鳳紝鏄竴涓瓨鍌ㄧ被鍏抽敭瀛椼?/p> <p align=left>絎簩涓櫡闃憋細(xì)</p> <p align=left>typedef register int FAST_COUNTER; // 閿欒<br>緙栬瘧閫氫笉榪囥傞棶棰樺嚭鍦ㄤ綘涓嶈兘鍦ㄥ0鏄庝腑鏈夊涓瓨鍌ㄧ被鍏抽敭瀛椼傚洜涓虹鍙?typedef 宸茬粡鍗犳嵁浜?jiǎn)瀛樺偍绫诲叧閿瓧鐨勪綅缃Q屽湪 typedef 澹版槑涓笉鑳界敤 register錛堟垨浠諱綍鍏跺畠瀛樺偍綾誨叧閿瓧錛夈?/p> <p align=left>4銆佸畾涔夋満鍣ㄦ棤鍏崇殑綾誨瀷</p> <p align=left> <wbr> <wbr> <wbr> 渚嬪錛屼綘鍙互瀹氫箟涓涓彨 REAL 鐨勬誕鐐圭被鍨嬶紝鍦ㄧ洰鏍囨満鍣ㄤ笂瀹冨彲浠鑾峰緱鏈楂樼殑綺懼害錛?/p> <p align=left>typedef long double REAL;<br>鍦ㄤ笉鏀寔 long double 鐨勬満鍣ㄤ笂錛岃 typedef 鐪嬭搗鏉ヤ細(xì)鏄笅闈㈣繖鏍鳳細(xì)</p> <p align=left>typedef double REAL;<br>騫朵笖錛屽湪榪?double 閮戒笉鏀寔鐨勬満鍣ㄤ笂錛岃 typedef 鐪嬭搗鏉ヤ細(xì)鏄繖鏍鳳細(xì)</p> <p align=left>typedef float REAL;<br>銆銆浣犱笉鐢ㄥ婧愪唬鐮佸仛浠諱綍淇敼錛屼究鍙互鍦ㄦ瘡涓縐嶅鉤鍙頒笂緙栬瘧榪欎釜浣跨敤 REAL 綾誨瀷鐨勫簲鐢ㄧ▼搴忋傚敮涓瑕佹敼鐨勬槸 typedef 鏈韓銆傚湪澶у鏁版儏鍐典笅錛岀敋鑷寵繖涓井灝忕殑鍙樺姩瀹屽叏閮藉彲浠ラ氳繃濂囧鐨勬潯浠剁紪璇戞潵鑷姩瀹炵幇銆備笉鏄悧? 鏍囧噯搴撳箍娉涘湴浣跨敤 typedef 鏉ュ垱寤鴻繖鏍風(fēng)殑騫沖彴鏃犲叧綾誨瀷錛歴ize_t錛宲trdiff 鍜?fpos_t 灝辨槸鍏朵腑鐨勪緥瀛愩傛澶栵紝璞?std::string 鍜?std::ofstream 榪欐牱鐨?typedef 榪橀殣钘忎簡(jiǎn)闀塊暱鐨勶紝闅句互鐞嗚В鐨勬ā鏉跨壒鍖栬娉曪紝渚嬪錛歜asic_string<char, char_traits<char>錛宎llocator<char>> 鍜?basic_ofstream<char, char_traits<char>>銆?/p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:19 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65376.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏋勯犲嚱鏁頒腑鐨則his鎸囬拡錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65375.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:19:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65375.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65375.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65375.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65375.html</trackback:ping><description><![CDATA[<p>-------------------------------鍘熺悊-------------------------------</p> <p>鏌愪簺浜鴻涓轟笉搴旇鍦ㄦ瀯閫犲嚱鏁頒腑浣跨敤this鎸囬拡錛屽洜涓鴻繖鏃秚his瀵硅薄榪樻病鏈夊畬鍏ㄥ艦鎴愩?/p> <p>浣嗘槸錛屽彧瑕佸皬蹇?jī)锛屾槸鍙互鍦ㄦ瀯閫犲嚱鏁頒腑浣跨敤this鎸囬拡鐨勶細(xì)</p> <p>鈼忓湪鍑芥暟浣撲腑</p> <p>鈼忓垵濮嬪寲鍒楄〃涓?/p> <p>鍥犱負(fù)“瀵硅薄榪樻病鏈夊畬鍏ㄥ艦鎴?#8221;涓嶆剰鍛崇潃“浠涔堥兘娌℃湁”銆?/p> <p>鍦ㄨ繘鍏ユ瀯閫犲嚱鏁幫紙鍙?qiáng)鍏禼haining錛変箣鍓嶏紝Compiler浼?xì)锛?xì)</p> <p>鈼忕粰class鐨刬nstance鍒嗛厤鍐呭瓨</p> <p>鈼忓緩绔嬭繍琛屾椂鍒葷郴緇熸墍闇鐨勪俊鎭紙濡倂tbl絳夛級(jí)</p> <p>鈼?#緙虹渷鍦?# 鏋勯犳墍鏈夌被鎴愬憳<br><img src="http://www.vckbase.com/document/journal/vckbase26/images/this-pattern.gif" width=441 height=450><br>-----------------------------銆愯兘銆?--------------------------------</p> <p>鏋勯犲嚱鏁扮殑鍑芥暟浣擄紙鎴栨瀯閫犲嚱鏁版墍璋冪敤鐨勫嚱鏁幫級(jí)銆愯兘銆戝彲闈犲湴璁塊棶錛?/p> <p>鈼忓熀綾諱腑澹版槑鐨勬暟鎹垚鍛?/p> <p>鈼忔瀯閫犲嚱鏁版墍灞炵被澹版槑鐨勬暟鎹垚鍛?/p> <p>榪欐槸鍥犱負(fù)鎵鏈夎繖浜涙暟鎹垚鍛樿淇濊瘉鍦ㄦ瀯閫犲嚱鏁板嚱鏁頒綋寮濮嬫墽琛屾椂宸茬粡琚畬鏁寸殑寤虹珛銆?/p> <p>-----------------------------銆愪笉鑳姐?--------------------------------</p> <p>鏋勯犲嚱鏁扮殑鍑芥暟浣擄紙鎴栨瀯閫犲嚱鏁版墍璋冪敤鐨勫嚱鏁幫級(jí)銆愪笉鑳姐戝悜涓嬭皟鐢細(xì)</p> <p>鈼忚媧劇敓綾婚噸瀹氫箟鐨勮櫄鍑芥暟</p> <p>榪欐槸鍥犱負(fù)鍦ㄥ熀綾葷殑鏋勯犲嚱鏁版墽琛屾湡闂達(dá)紝“瀵硅薄榪樹笉鏄竴涓淳鐢熺被鐨勫璞?#8221;銆?/p> <p>---------------------------銆愭湁鏃躲?----------------------------------</p> <p>浠ヤ笅鏄愭湁鏃躲戝彲琛岀殑錛?/p> <p>鈼忎紶閫?this 瀵硅薄鐨勪換浣曚竴涓暟鎹垚鍛樼粰鍙︿竴涓暟鎹垚鍛樼殑鍒濆鍖栫▼搴?/p> <p>浣犲繀欏葷‘淇濊鏁版嵁鎴愬憳宸茬粡琚垵濮嬪寲銆傚ソ娑堟伅鏄綘鑳戒嬌鐢ㄤ竴浜涗笉渚濊禆浜庝綘鎵浣跨敤鐨勭紪璇戝櫒鐨勬樉钁楃殑璇█瑙勫垯錛屾潵紜畾閭d釜鏁版嵁鎴愬憳鏄惁宸茬粡錛堟垨鑰呰繕娌℃湁錛夎鍒濆鍖栥傚潖娑堟伅鏄綘蹇呴』鐭ラ亾榪欎簺璇█瑙勫垯錛堜緥濡傦紝鍩虹被瀛愬璞¢鍏堣鍒濆鍖栵紙濡傛灉鏈夊閲嶅拰錛忔垨铏氱戶鎵匡紝鍒欐煡璇㈣繖涓搴忥紒錛夛紝鐒跺悗綾諱腑瀹氫箟鐨勬暟鎹垚鍛樻牴鎹湪綾諱腑澹版槑鐨勬搴忚鍒濆鍖栵級(jí)銆傚鏋滀綘涓嶇煡閬撹繖浜涜鍒欙紝鍒欎笉瑕佷粠this瀵硅薄浼犻掍換浣曟暟鎹垚鍛橈紙涓嶈鏄惁鏄懼紡鐨勪嬌鐢ㄤ簡(jiǎn)this鍏抽敭瀛楋級(jí)緇欎換浣曞叾浠栨暟鎹垚鍛樼殑鍒濆鍖栫▼搴忥紒濡傛灉浣犵煡閬撹繖浜涜鍒欙紝鍒欓渶瑕佸皬蹇?jī)銆?/p> <p>----------------------------鐢ㄩ?---------------------------------</p> <p>濂界殑OO璁捐寮鴻皟“楂樿仛鍚?#8221;錛岃繖鏍蜂細(xì)浜х敓寰堝灝忕殑璐d換鍗曚竴鐨勫璞?鍏跺疄“鍗曚竴璐d換鍘熷垯”鏍規(guī)湰灝辨槸鏈鍩虹鐨凮O鍘熷垯)銆?/p> <p>閭d箞錛屽皬瀵硅薄涔嬮棿鐨勫崗浣滃氨闇瑕侀厤緗?鍏跺疄“鍗忎綔鍙厤緗?#8221;鏈韓灝辨槸鎴戜滑甯屾湜鐨勭伒媧繪ф墍鍦?錛?/p> <p>鈼忔瘮濡侽bserver妯″紡涓璼ubject鍜宱bserver鐨勫崗浣滈渶瑕佽皟subject.RegistorObserver(observer)鏉ラ厤緗?/p> <p>鈼忓啀姣斿澶氬獟浣撴鏋禗irectShow涓璮ilterGraph鍜寁ideoWindow鐨勫崗浣滈渶瑕佽皟filterGraph.SetVideoWindow(videoWindow)鏉ラ厤緗?/p> <p>鑰屾瀯閫犲嚱鏁版槸寰堝吀鍨嬬殑閰嶇疆鏃舵満錛屼婦渚嬪涓嬶細(xì)</p> <p><br>class CMyWindow : public CWnd<br>{<br>private:<br>CFilterGraph filterGraph;<br>public<br>CMyWindow() { filterGraph.SetVideoWindow(this); };<br>};<br>--------------------------闄勫綍------------------------------------</p> <p>闇瑕佹槑浜?jiǎn)鐨勬槸锛屻愭瀯閫?鏋愭瀯/鏅氥戝拰銆愯櫄/闈炶櫄銆戞槸瀹屽叏鐙珛鐨勫垎綾繪柟寮忥細(xì)<br>鈼忓彧瑕佹槸“鏋勯?鏋愭瀯”灝?#8220;涓茶仈(chaining)”<br>鈼忓彧瑕佹槸“铏氬嚱鏁?#8221;灝?#8220;鍙兘obj.vfun()”</p> <p>瀹冧滑鍙互“涓璧風(fēng)敓鏁?#8221;浣?#8220;涓嶄簰鐩稿共鎵?#8221;錛屾瘮濡傝櫄鏋愭瀯鍑芥暟鐨勬儏鍐碉紝鐪嬩笅闈㈢殑渚嬪瓙錛?/p> <pre>class superclass <br>{ <br>   virtual ~superclass() <br>   { <br>      println("superclass::~superclass()"); <br>   } <br>}; <br>class subclass : public superclass <br>{ <br>   virtual ~subclass() <br>   { <br>      println("subclass::~subclass()"); <br>   } <br>};</pre> 鎵ц <pre>superclass * super = new subclass(); </pre> <pre>delete super;</pre> 鐨勭粨鏋滄槸鎵撳嵃鍑? <pre>subclass::~subclass() </pre> <pre>superclass::~superclass()</pre> 榪欐剰鍛崇潃褰撴墽琛宒elete super;鏃訛細(xì)<br>鈼忔槸鍚︽槸chaining寮廲all鍛紵鏄傚洜涓烘槸鏋愭瀯鍑芥暟銆?br>鈼忛偅chaining call浠庡摢閲屽紑濮嬪憿錛熶粠subclass::~subclass() ==銆塻uperclass::~superclass()錛?br>鍥犱負(fù)superclass * super鐨勫疄闄呭璞$殑綾誨瀷鏄痵ubclass銆? <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:19 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65375.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>this鎸囬拡錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65372.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:16:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65372.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65372.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65372.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65372.html</trackback:ping><description><![CDATA[鏈変笅闈㈢殑涓涓畝鍗曠殑綾伙細(xì) <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> <wbr>CNullPointCall<br>{<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>Test1();<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>Test2();<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>Test3(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>iTest);<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>Test4();<br><br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>m_iStatic;<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>m_iTest;<br>};<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>CNullPointCall::m_iStatic <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CNullPointCall::Test1()<br>{<br> <wbr> <wbr> <wbr> <wbr>cout <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>m_iStatic <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>endl;<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CNullPointCall::Test2()<br>{<br> <wbr> <wbr> <wbr> <wbr>cout <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Very <wbr>Cool!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>endl; <wbr><br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CNullPointCall::Test3(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>iTest)<br>{<br> <wbr> <wbr> <wbr> <wbr>cout <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>iTest <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>endl; <wbr><br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CNullPointCall::Test4()<br>{<br> <wbr> <wbr> <wbr> <wbr>cout <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>m_iTest <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>endl; <wbr><br>}</span></div> </div> <div> <wbr> <wbr> <wbr> 閭d箞涓嬮潰鐨勪唬鐮侀兘姝g‘鍚楋紵閮戒細(xì)杈撳嚭浠涔堬紵</div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #000000">CNullPointCall <wbr></span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pNull <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr>NULL; <wbr></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>娌¢敊錛屽氨鏄粰鎸囬拡璧嬪間負(fù)絀?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test1();</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>call <wbr>1</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test2(); <wbr></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>call <wbr>2</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test3(</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">); <wbr></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>call <wbr>3</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test4(); <wbr><span style="COLOR: #008000">/</span></span><span style="COLOR: #008000">/</span><span style="COLOR: #008000"> <wbr>call <wbr>4</span></div> </div> <div> <wbr> <wbr> <wbr> 浣犺偗瀹氫細(xì)寰堝鎬垜涓轟粈涔堣繖涔堥棶銆備竴涓間負(fù)NULL鐨勬寚閽堟庝箞鍙互鐢ㄦ潵璋冪敤綾葷殑鎴愬憳鍑芥暟鍛紵錛佸彲鏄疄浜嬪嵈寰堣浜哄悆鎯婏細(xì)闄や簡(jiǎn)call 4閭h浠g爜浠ュ錛屽叾浣?涓被鎴愬憳鍑芥暟鐨勮皟鐢ㄩ兘鏄垚鍔熺殑錛岄兘鑳芥紜殑杈撳嚭緇撴灉錛岃屼笖鍖呭惈榪?琛屼唬鐮佺殑紼嬪簭鑳介潪甯稿ソ鐨勮繍琛屻?br> <wbr> <wbr> <wbr> 緇忚繃緇嗗績(jī)鐨勬瘮杈冨氨鍙互鍙戠幇錛宑all 4閭h浠g爜璺熷叾浠?琛屼唬鐮佺殑鏈川鍖哄埆錛氱被CNullPointCall鐨勬垚鍛樺嚱鏁頒腑鐢ㄥ埌浜?jiǎn)this鎸囬拡銆?br> <wbr> <wbr> <wbr> 瀵逛簬綾繪垚鍛樺嚱鏁拌岃█錛屽茍涓嶆槸涓涓璞″搴斾竴涓崟鐙殑鎴愬憳鍑芥暟浣擄紝鑰屾槸姝ょ被鐨勬墍鏈夊璞″叡鐢ㄨ繖涓垚鍛樺嚱鏁頒綋銆傚綋紼嬪簭琚紪璇戜箣鍚庯紝姝ゆ垚鍛樺嚱鏁板湴鍧鍗沖凡紜畾銆傝屾垚鍛樺嚱鏁頒箣鎵浠ヨ兘鎶婂睘浜庢綾葷殑鍚勪釜瀵硅薄鐨勬暟鎹尯鍒紑, 灝辨槸闈犺繖涓猼his鎸囬拡銆傚嚱鏁頒綋鍐呮墍鏈夊綾繪暟鎹垚鍛樼殑璁塊棶錛岄兘浼?xì)琚浆鍖栦负this->鏁版嵁鎴愬憳鐨勬柟寮忋?br> <wbr> <wbr> <wbr> 鑰屼竴涓璞$殑this鎸囬拡騫朵笉鏄璞℃湰韜殑涓閮ㄥ垎錛屼笉浼?xì)濯?jiǎng)鍝峴izeof錛?#8220;瀵硅薄”錛夌殑緇撴灉銆倀his浣滅敤鍩熸槸鍦ㄧ被鍐呴儴錛屽綋鍦ㄧ被鐨勯潪闈?rùn)鎬佹垚鍛樺嚱鏁頒腑璁塊棶綾葷殑闈為潤(rùn)鎬佹垚鍛樼殑鏃跺欙紝緙栬瘧鍣ㄤ細(xì)鑷姩灝嗗璞℃湰韜殑鍦板潃浣滀負(fù)涓涓殣鍚弬鏁頒紶閫掔粰鍑芥暟銆備篃灝辨槸璇達(dá)紝鍗充嬌浣犳病鏈夊啓涓妕his鎸囬拡錛岀紪璇戝櫒鍦ㄧ紪璇戠殑鏃跺欎篃鏄姞涓妕his鐨勶紝瀹冧綔涓洪潪闈?rùn)鎬佹垚鍛樺嚱鏁扮殑闅愬惈褰㈠弬錛屽鍚勬垚鍛樼殑璁塊棶鍧囬氳繃this榪涜銆?br> <wbr> <wbr> <wbr> 瀵逛簬涓婇潰鐨勪緥瀛愭潵璇達(dá)紝this鐨勫間篃灝辨槸pNull鐨勫箋備篃灝辨槸璇磘his鐨勫間負(fù)NULL銆傝孴est1()鏄潤(rùn)鎬佸嚱鏁幫紝緙栬瘧鍣ㄤ笉浼?xì)缁欏畠浼犻抰his鎸囬拡錛屾墍浠all 1閭h浠g爜鍙互姝g‘璋冪敤錛堣繖閲岀浉褰撲簬CNullPointCall::Test1()錛夛紱瀵逛簬Test2()鍜孴est3()涓や釜鎴愬憳鍑芥暟錛岃櫧鐒剁紪璇戝櫒浼?xì)缁櫂q欎袱涓嚱鏁頒紶閫抰his鎸囬拡錛屼絾鏄畠浠茍娌℃湁閫氳繃this鎸囬拡鏉ヨ闂被鐨勬垚鍛樺彉閲忥紝鍥犳call 2鍜宑all 3涓よ浠g爜鍙互姝g‘璋冪敤錛涜屽浜庢垚鍛樺嚱鏁癟est4()瑕佽闂被鐨勬垚鍛樺彉閲忥紝鍥犳瑕佷嬌鐢╰his鎸囬拡錛岃繖涓椂鍊欏彂鐜皌his鎸囬拡鐨勫間負(fù)NULL錛屽氨浼?xì)閫犳垚紼嬪簭鐨勫穿婧冦?nbsp;<wbr> <wbr> <wbr><br> <wbr> <wbr> <wbr> 鍏跺疄錛屾垜浠彲浠ユ兂璞$紪璇戝櫒鎶奣est4()杞崲鎴愬涓嬬殑褰㈠紡錛?/div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CNullPointCall::Test4(CNullPointCall <wbr></span><span style="COLOR: #000000">*</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">)<br>{<br> <wbr> <wbr> <wbr> <wbr>cout <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">m_iTest <wbr></span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> <wbr>endl; <wbr><br>}</span></div> </div> <div> <wbr> <wbr> <wbr> 鑰屾妸call 4閭h浠g爜杞崲鎴愪簡(jiǎn)涓嬮潰鐨勫艦寮忥細(xì)</div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #000000">CNullPointCall::Test4(pNull);</span></div> </div> <div> <wbr> <wbr> <wbr> 鎵浠ヤ細(xì)鍦ㄩ氳繃this鎸囬拡璁塊棶m_iTest鐨勬椂鍊欓犳垚紼嬪簭鐨勫穿婧冦?br> <wbr> <wbr> <wbr> 涓嬮潰閫氳繃鏌ョ湅涓婇潰浠g爜鐢╒C 2005緙栬瘧鍚庣殑姹囩紪浠g爜鏉ヨ緇嗚В閲婁竴涓嬬濂囩殑this鎸囬拡銆?br> <wbr> <wbr> <wbr> 涓婇潰鐨凜++浠g爜緙栬瘧鐢熸垚鐨勬眹緙栦唬鐮佹槸涓嬮潰鐨勫艦寮忥細(xì)</div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #000000"> <wbr> <wbr> <wbr> <wbr>CNullPointCall <wbr></span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pNull <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr>NULL;<br>0041171E <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>dword <wbr>ptr <wbr>[pNull],</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> <wbr><br> <wbr> <wbr> <wbr> <wbr>pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test1();<br></span><span style="COLOR: #000000">00411725</span><span style="COLOR: #000000"> <wbr> <wbr>call <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>CNullPointCall::Test1 <wbr>(411069h) <wbr><br> <wbr> <wbr> <wbr> <wbr>pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test2();<br>0041172A <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx,dword <wbr>ptr <wbr>[pNull] <wbr><br>0041172D <wbr> <wbr>call <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>CNullPointCall::Test2 <wbr>(4111E0h) <wbr><br> <wbr> <wbr> <wbr> <wbr>pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test3(</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #000000">00411732</span><span style="COLOR: #000000"> <wbr> <wbr>push <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>0Dh <wbr> <wbr><br></span><span style="COLOR: #000000">00411734</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx,dword <wbr>ptr <wbr>[pNull] <wbr><br></span><span style="COLOR: #000000">00411737</span><span style="COLOR: #000000"> <wbr> <wbr>call <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>CNullPointCall::Test3 <wbr>(41105Ah) <wbr><br> <wbr> <wbr> <wbr> <wbr>pNull</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">Test4();<br>0041173C <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx,dword <wbr>ptr <wbr>[pNull] <wbr><br>0041173F <wbr> <wbr>call <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>CNullPointCall::Test4 <wbr>(411032h) <wbr></span></div> </div> <div> <wbr> <wbr> <wbr> 閫氳繃姣旇緝闈?rùn)鎬佸嚱鏁癟est1()鍜屽叾浠?涓潪闈?rùn)鎬佸嚱鏁拌皟鐢ㄦ墍鐢熸垚鐨勭殑姹囩紪浠g爜鍙互鐪嬪嚭錛氶潪闈?rùn)鎬佸嚱鏁拌皟鐢ㄤ箣鍓嶉兘浼?xì)鎶婃寚鍚戝璞$殑鎸囬拡pNull錛堜篃灝辨槸this鎸囬拡錛夋斁鍒癳cx瀵勫瓨鍣ㄤ腑錛坢ov ecx,dword ptr [pNull]錛夈傝繖灝辨槸this鎸囬拡鐨勭壒孌婁箣澶勩傜湅call 3閭hC++浠g爜鐨勬眹緙栦唬鐮佸氨鍙互鐪嬪埌this鎸囬拡璺熶竴鑸殑鍑芥暟鍙傛暟鐨勫尯鍒細(xì)涓鑸殑鍑芥暟鍙傛暟鏄洿鎺ュ帇鍏ユ爤涓紙push 0Dh錛夛紝鑰宼his鎸囬拡鍗磋鏀懼埌浜?jiǎn)ecx瀵勫瓨鍣ㄤ腑銆傚湪綾葷殑闈炴垚鍛樺嚱鏁頒腑濡傛灉瑕佺敤鍒扮被鐨勬垚鍛樺彉閲忥紝灝卞彲浠ラ氳繃璁塊棶ecx瀵勫瓨鍣ㄦ潵寰楀埌鎸囧悜瀵硅薄鐨則his鎸囬拡錛岀劧鍚庡啀閫氳繃this鎸囬拡鍔犱笂鎴愬憳鍙橀噺鐨勫亸縐婚噺鏉ユ壘鍒扮浉搴旂殑鎴愬憳鍙橀噺銆?br> <wbr> <wbr> <wbr> 涓嬮潰鍐嶉氳繃鍙﹀涓涓緥瀛愭潵璇存槑this鎸囬拡鏄庢牱琚紶閫掑埌鎴愬憳鍑芥暟涓拰濡備綍浣跨敤this鏉ヨ闂垚鍛樺彉閲忕殑銆?br> <wbr> <wbr> <wbr> 渚濈劧鏄竴涓緢綆鍗曠殑綾伙細(xì)</div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> <wbr>CTest<br>{<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>SetValue();<br><br></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>m_iValue1;<br> <wbr> <wbr> <wbr> <wbr></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> <wbr>m_iValue2;<br>};<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CTest::SetValue()<br>{<br> <wbr> <wbr> <wbr> <wbr>m_iValue1 <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">;<br> <wbr> <wbr> <wbr> <wbr>m_iValue2 <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">;<br>}</span></div> </div> <div> <wbr> <wbr> <wbr> 鐢ㄥ涓嬬殑浠g爜璋冪敤鎴愬憳鍑芥暟錛?/div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #000000">CTest <wbr>test;<br>test.SetValue();<br></span></div> </div> <div> <wbr> <wbr> <wbr> 涓婇潰鐨凜++浠g爜鐨勬眹緙栦唬鐮佷負(fù)錛?/div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #000000"> <wbr> <wbr> <wbr> <wbr>CTest <wbr>test;<br> <wbr> <wbr> <wbr> <wbr>test.SetValue();<br>004117DC <wbr> <wbr>lea <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx,[test] <wbr><br>004117DF <wbr> <wbr>call <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>CTest::SetValue <wbr>(4111CCh) <wbr></span></div> </div> <div> <wbr> <wbr> <wbr> 鍚屾牱鐨勶紝棣栧厛鎶婃寚鍚戝璞$殑鎸囬拡鏀懼埌ecx瀵勫瓨鍣ㄤ腑錛涚劧鍚庤皟鐢ㄧ被CTest鐨勬垚鍛樺嚱鏁癝etValue()銆傚湴鍧4111CCh閭i噷瀛樻斁鐨勫叾瀹炲氨鏄竴涓漿璺蟲寚浠わ紝杞煩鍒版垚鍛樺嚱鏁癝etValue()鍐呴儴銆?/div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #000000">004111CC <wbr> <wbr>jmp <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>CTest::SetValue <wbr>(411750h)</span></div> </div> <div> <wbr> <wbr> <wbr> 鑰?11750h鎵嶆槸綾籆Test鐨勬垚鍛樺嚱鏁癝etValue()鐨勫湴鍧銆?/div> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> <wbr>CTest::SetValue()<br>{<br></span><span style="COLOR: #000000">00411750</span><span style="COLOR: #000000"> <wbr> <wbr>push <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ebp <wbr> <wbr><br></span><span style="COLOR: #000000">00411751</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ebp,esp <wbr><br></span><span style="COLOR: #000000">00411753</span><span style="COLOR: #000000"> <wbr> <wbr>sub <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>esp,0CCh <wbr><br></span><span style="COLOR: #000000">00411759</span><span style="COLOR: #000000"> <wbr> <wbr>push <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ebx <wbr> <wbr><br>0041175A <wbr> <wbr>push <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>esi <wbr> <wbr><br>0041175B <wbr> <wbr>push <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>edi <wbr> <wbr><br>0041175C <wbr> <wbr>push <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>1 <wbr> <wbr> <wbr></span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">0041175D <wbr> <wbr>lea <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>edi,[ebp</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">0CCh] <wbr><br></span><span style="COLOR: #000000">00411763</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx,33h <wbr><br></span><span style="COLOR: #000000">00411768</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>eax,0CCCCCCCCh <wbr><br>0041176D <wbr> <wbr>rep <wbr>stos <wbr> <wbr> <wbr> <wbr>dword <wbr>ptr <wbr>es:[edi] <wbr><br>0041176F <wbr> <wbr>pop <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ecx</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>2 <wbr></span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">00411770</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>dword <wbr>ptr <wbr>[ebp</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">],ecx</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>3</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"> <wbr> <wbr> <wbr> <wbr>m_iValue1 <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #000000">00411773</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>eax,dword <wbr>ptr <wbr>[</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">]</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>4</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">00411776</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>dword <wbr>ptr <wbr>[eax],0Dh</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>5</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"> <wbr> <wbr> <wbr> <wbr>m_iValue2 <wbr></span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <wbr></span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">;<br>0041177C <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>eax,dword <wbr>ptr <wbr>[</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">]</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>6</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">0041177F <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>dword <wbr>ptr <wbr>[eax</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">],0Dh</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000"> <wbr>7</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">}<br></span><span style="COLOR: #000000">00411786</span><span style="COLOR: #000000"> <wbr> <wbr>pop <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>edi <wbr> <wbr><br></span><span style="COLOR: #000000">00411787</span><span style="COLOR: #000000"> <wbr> <wbr>pop <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>esi <wbr> <wbr><br></span><span style="COLOR: #000000">00411788</span><span style="COLOR: #000000"> <wbr> <wbr>pop <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ebx <wbr> <wbr><br></span><span style="COLOR: #000000">00411789</span><span style="COLOR: #000000"> <wbr> <wbr>mov <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>esp,ebp <wbr><br>0041178B <wbr> <wbr>pop <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>ebp <wbr> <wbr><br>0041178C <wbr> <wbr>ret <wbr></span></div> </div> <div> <wbr> <wbr> <wbr> 涓嬮潰瀵逛笂闈㈢殑姹囩紪浠g爜涓殑閲嶇偣琛岃繘琛屽垎鏋愶細(xì)<br> <wbr> <wbr> <wbr> 1銆佸皢ecx瀵勫瓨鍣ㄤ腑鐨勫煎帇鏍堬紝涔熷氨鏄妸this鎸囬拡鍘嬫爤銆?br> <wbr> <wbr> <wbr> 2銆乪cx瀵勫瓨鍣ㄥ嚭鏍堬紝涔熷氨鏄痶his鎸囬拡鍑烘爤銆?br> <wbr> <wbr> <wbr> 3銆佸皢ecx鐨勫兼斁鍒版寚瀹氱殑鍦版柟錛屼篃灝辨槸this鎸囬拡鏀懼埌[ebp-8]鍐呫?br> <wbr> <wbr> <wbr> 4銆佸彇this鎸囬拡鐨勫兼斁鍏ax瀵勫瓨鍣ㄥ唴銆傛鏃訛紝this鎸囬拡鎸囧悜test瀵硅薄錛宼est瀵硅薄鍙湁涓や釜int鍨嬬殑鎴愬憳鍙橀噺錛屽湪test瀵硅薄鍐呭瓨涓繛緇瓨鏀撅紝涔熷氨鏄this鎸囬拡鐩墠鎸囧悜m_iValue1銆?br> <wbr> <wbr> <wbr> 5銆佺粰瀵勫瓨鍣╡ax鎸囧悜鐨勫湴鍧璧嬪?Dh錛堝崄鍏繘鍒剁殑13錛夈傚叾瀹炲氨鏄粰鎴愬憳鍙橀噺m_iValue1璧嬪?3銆?br> <wbr> <wbr> <wbr> 6銆佸悓4銆?br> <wbr> <wbr> <wbr> 7銆佺粰瀵勫瓨鍣╡ax鎸囧悜鐨勫湴鍧鍔?鐨勫湴鍧璧嬪箋傚湪4涓凡緇忚鏄庯紝eax瀵勫瓨鍣ㄥ唴瀛樻斁鐨勬槸this鎸囬拡錛岃宼his鎸囬拡鎸囧悜榪炵畫瀛樻斁鐨刬nt鍨嬬殑鎴愬憳鍙橀噺m_iValue1銆倀his鎸囬拡鍔?錛坰izeof(int)錛変篃灝辨槸鎴愬憳鍙橀噺m_iValue2鐨勫湴鍧銆傚洜姝よ繖涓琛屽氨鏄粰鎴愬憳鍙橀噺m_iValue2璧嬪箋?br> <wbr> <wbr> <wbr> 閫氳繃涓婇潰鐨勫垎鏋愶紝鎴戜滑鍙互浠庡簳灞備簡(jiǎn)瑙d簡(jiǎn)C++涓璽his鎸囬拡鐨勫疄鐜版柟娉曘傝櫧鐒朵笉鍚岀殑緙栬瘧鍣ㄤ細(xì)浣跨敤涓嶅悓鐨勫鐞嗘柟娉曪紝浣嗘槸C++緙栬瘧鍣ㄥ繀欏婚伒瀹圕++鏍囧噯錛屽洜姝ゅ浜巘his鎸囬拡鐨勫疄鐜板簲璇ラ兘鏄樊涓嶅鐨勩?/div> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:16 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65372.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>寮曠敤錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65371.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:15:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65371.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65371.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65371.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65371.html</trackback:ping><description><![CDATA[<p>----寮曠敤鐨勫湴鍧錛?/p> <p> <wbr> <wbr> <wbr> 鐢變簬寮曠敤鏈韓灝辨槸鐩爣鐨勪竴涓埆鍚嶏紝寮曠敤鏈韓鐨勫湴鍧鏄竴涓病鏈夋剰涔夌殑鍊鹼紝鎵浠ュ湪c++涓槸鏃犳硶鍙栧緱寮曠敤鐨勫唴瀛樺湴鍧鐨勩傚彇寮曠敤鐨勫湴鍧灝辨槸鍙栫洰鏍囩殑鍦板潃錛宑++鏈韓灝辨牴鏈笉鎻愪緵鑾峰彇寮曠敤鍐呭瓨鍦板潃鐨勬柟娉曘?/p> <p> <wbr></p> <p>----寮曠敤鐨勮祴鍊?/p> <p> <wbr> <wbr> <wbr> 寮曠敤涓浣嗗垵濮嬪寲,灝變笉鍦ㄨ兘澶熻鎸囧悜鍏跺畠鐨勭洰鏍囷紝铏界劧緙栬瘧涓嶄細(xì)鍑洪敊錛屼絾鎿嶄綔鏄笉璧蜂綔鐢ㄧ殑錛屽疄闄呬笂榪樻槸鎸囧悜鏈鍏堟寚鍚戠殑鐩爣銆?br /> int <wbr>a=10; <wbr> <wbr><br /> int <wbr>b=20; <wbr> <wbr><br /> int <wbr>&rn=a; <wbr> <wbr><br /> rn=b;//鎶婂紩鐢ㄦ寚鍚戝彟涓涓洰鏍?---鍙橀噺b <wbr><br /> 涓婇潰浠g爜涓殑rn=b瀹為檯鍦ㄨ綆楁満鐪嬫潵灝辨槸a=b錛屾墍浠ヤ慨鏀圭殑榪樻槸a鐨勫箋?/p> <p> <wbr> <wbr> <wbr> void淇グ鏄笉鑳藉澹版槑寮曠敤鐨勶紝<span style="color: #ffff00;"><strong>寮曠敤鏄笉鑳藉澹版槑鏁扮粍鐨?/strong></span>錛屽嵆涓嶈兘澶熷0鏄庡紩鐢ㄦ暟緇勶紝鍥犱負(fù)鏁扮粍鏄竴涓敱鑻ュ共涓厓绱犳墍緇勬垚鐨勯泦鍚堬紝鎵浠ユ棤娉曞緩绔嬩竴涓暟緇勭殑鍒悕銆?/p> <p> <wbr></p> <p>----榪斿洖綾繪垚鍛樺紩鐢細(xì)</p> <p> <wbr> <wbr> <wbr> 鍙互榪斿洖綾繪垚鍛樼殑寮曠敤錛屼絾鏈濂芥槸const銆傝繖鏉″師鍒欏彲浠ュ弬鐓ffective C++[1]鐨処tem 30銆備富瑕佸師鍥犳槸褰撳璞$殑灞炴ф槸涓庢煇縐嶄笟鍔¤鍒欙紙business rule錛夌浉鍏寵仈鐨勬椂鍊欙紝鍏惰祴鍊煎父甯鎬笌鏌愪簺鍏跺畠灞炴ф垨鑰呭璞$殑鐘舵佹湁鍏籌紝鍥犳鏈夊繀瑕佸皢璧嬪兼搷浣滃皝瑁呭湪涓涓笟鍔¤鍒欏綋涓傚鏋滃叾瀹冨璞″彲浠ヨ幏寰楄灞炴х殑闈炲父閲忓紩鐢紙鎴栨寚閽堬級(jí)錛岄偅涔堝璇ュ睘鎬х殑鍗曠函璧嬪煎氨浼?xì)鐮村潖涓氬姟瑙勫垯鐨勫畬鏁存с?/p> <p><br /> ----寮曠敤涓庝竴浜涙搷浣滅鐨勯噸杞斤細(xì)<br />  <wbr> <wbr> <wbr> 嫻佹搷浣滅<<鍜?gt;>錛氳繖涓や釜鎿嶄綔絎﹀父甯稿笇鏈涜榪炵畫浣跨敤錛屼緥濡傦細(xì)cout << "hello" << endl;銆鍥犳榪欎袱涓搷浣滅鐨勮繑鍥炲煎簲璇ユ槸涓涓粛鐒舵敮鎸佽繖涓や釜鎿嶄綔絎︾殑嫻佸紩鐢ㄣ傚彲閫夌殑鍏跺畠鏂規(guī)鍖呮嫭錛氳繑鍥炰竴涓祦瀵硅薄鍜岃繑鍥炰竴涓祦瀵硅薄鎸囬拡銆備絾鏄浜庤繑鍥炰竴涓祦瀵硅薄錛岀▼搴忓繀欏婚噸鏂幫紙鎷瘋礉錛夋瀯閫犱竴涓柊鐨勬祦瀵硅薄錛屼篃灝辨槸璇達(dá)紝榪炵畫鐨勪袱涓?lt;<鎿嶄綔絎﹀疄闄呬笂鏄拡瀵逛笉鍚屽璞$殑錛佽繖鏃犳硶璁╀漢鎺ュ彈銆傚浜庤繑鍥炰竴涓祦鎸囬拡鍒欎笉鑳借繛緇嬌鐢?lt;<鎿嶄綔絎︺傚洜姝わ紝榪斿洖涓涓祦瀵硅薄寮曠敤鏄儫涓閫夋嫨銆傝繖涓敮涓閫夋嫨寰堝叧閿紝瀹冭鏄庝簡(jiǎn)寮曠敤鐨勯噸瑕佹т互鍙?qiáng)鏃犲彲鏇夸唬鎬э紝涔熻榪欏氨鏄疌++璇█涓紩鍏ュ紩鐢ㄨ繖涓蹇電殑鍘熷洜鍚с?/p> <p> <wbr> <wbr> <wbr> 璧嬪兼搷浣滅=錛岃繖涓搷浣滅璞℃祦鎿嶄綔絎︿竴鏍鳳紝鏄彲浠ヨ繛緇嬌鐢ㄧ殑錛屼緥濡傦細(xì)x = j = 10;鎴栬?x=10)=100;璧嬪兼搷浣滅鐨勮繑鍥炲煎繀欏繪槸涓涓乏鍊鹼紝浠ヤ究鍙互琚戶緇祴鍊箋傚洜姝ゅ紩鐢ㄦ垚浜?jiǎn)杩欎釜鎿嶄綔绗︾殑鎯熶竴榪斿洖鍊奸夋嫨銆?/p> <p>#include <iostream.h><br /> int &put(int n);<br /> int vals[10];<br /> int error=-1;<br /> void main()<br /> {<br />  <wbr> <wbr> <wbr> put(0)=10; //浠ut(0)鍑芥暟鍊間綔涓哄乏鍊鹼紝絳変環(huán)浜巚als[0]=10; <wbr><br />  <wbr> <wbr> <wbr> put(9)=20; //浠ut(9)鍑芥暟鍊間綔涓哄乏鍊鹼紝絳変環(huán)浜巚als[9]=10;<br />  <wbr> <wbr> <wbr> cout<<vals[0]; <wbr><br />  <wbr> <wbr> <wbr> cout<<vals[9];<br /> }<br /> int &put(int n)<br /> {<br />  <wbr> <wbr> <wbr> if (n>=0 && n<=9 ) return vals[n];<br />  <wbr> <wbr> <wbr> else { cout<<"subscript error"; return error; }<br /> }</p> <p> <wbr> <wbr> <wbr> <wbr>鍦ㄥ彟澶栫殑涓浜涙搷浣滅涓紝鍗村崈涓囦笉鑳借繑鍥炲紩鐢細(xì)+-*/ 鍥涘垯榪愮畻絎︺傚畠浠笉鑳借繑鍥炲紩鐢紝Effective C++[1]鐨処tem23璇︾粏鐨勮璁轟簡(jiǎn)榪欎釜闂銆備富瑕佸師鍥犳槸榪欏洓涓搷浣滅娌℃湁side effect錛屽洜姝わ紝瀹冧滑蹇呴』鏋勯犱竴涓璞′綔涓鴻繑鍥炲鹼紝鍙夌殑鏂規(guī)鍖呮嫭錛氳繑鍥炰竴涓璞°佽繑鍥炰竴涓眬閮ㄥ彉閲忕殑寮曠敤錛岃繑鍥炰竴涓猲ew鍒嗛厤鐨勫璞$殑寮曠敤銆佽繑鍥炰竴涓潤(rùn)鎬佸璞″紩鐢ㄣ傛牴鎹墠闈㈡彁鍒扮殑寮曠敤浣滀負(fù)榪斿洖鍊肩殑涓変釜瑙勫垯錛岀2銆?涓や釜鏂規(guī)閮借鍚﹀喅浜?jiǎn)銆傞潤(rùn)鎬佸璞$殑寮曠敤鍙堝洜涓?(a+b) == (c+d))浼?xì)姘笜q滀負(fù)true鑰屽鑷撮敊璇傛墍浠ュ彲閫夌殑鍙墿涓嬭繑鍥炰竴涓璞′簡(jiǎn)銆?/p> <p> <wbr></p> <p>----寮曠敤鍜屽鎬侊細(xì)<br />  <wbr> <wbr> <wbr> 寮曠敤鏄櫎鎸囬拡澶栧彟涓涓彲浠ヤ駭鐢熷鎬佹晥鏋滅殑鎵嬫銆傝繖鎰忓懗鐫錛屼竴涓熀綾葷殑寮曠敤鍙互鎸囧悜瀹冪殑媧劇敓綾誨疄渚嬨?br /> class 銆A;<br /> class 銆B錛歱ublic A{……};<br /> B 銆b;<br /> A 銆&Ref = b; // 鐢ㄦ淳鐢熺被瀵硅薄鍒濆鍖栧熀綾誨璞$殑寮曠敤<br /> Ref 鍙兘鐢ㄦ潵璁塊棶媧劇敓綾誨璞′腑浠庡熀綾葷戶鎵夸笅鏉ョ殑鎴愬憳錛屾槸鍩虹被寮曠敤鎸囧悜媧劇敓綾匯傚鏋淎綾諱腑瀹氫箟鏈夎櫄鍑芥暟錛屽茍涓斿湪B綾諱腑閲嶅啓浜?jiǎn)杩欎釜铏氬嚱鏁板Q屽氨鍙互閫氳繃Ref浜х敓澶氭佹晥鏋溿?br /> </p> <p> <wbr></p> <p>----寮曠敤涓庡嚱鏁拌繑鍥炲?/p> <p>1銆?/p> <p class="code">#include <wbr><iostream> <wbr> <wbr> <wbr><br /> #include <wbr><string> <wbr> <wbr> <wbr><br /> using <wbr>namespace <wbr>std; <wbr> <wbr><br /> <br /> float <wbr>c; <wbr><br /> float <wbr>test(float,float); <wbr><br /> void <wbr>main(int <wbr>argc,char* <wbr>argv[]) <wbr> <wbr> <wbr> <wbr> <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>float <wbr>pn=test(3.0f,1.2f); <wbr><br />  <wbr> <wbr> <wbr> <wbr>cout<<pn; <wbr><br />  <wbr> <wbr> <wbr> <wbr>cin.get(); <wbr><br /> } <wbr><br />  <wbr><br /> float <wbr>test(float <wbr>a,float <wbr>b) <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>c=a*b; <wbr><br />  <wbr> <wbr> <wbr> <wbr>return <wbr>c; <wbr><br /> }</p> <p>銆銆鍦ㄤ笂闈㈢殑浠g爜涓垜浠彲鑳戒互涓哄嚱鏁拌繑鍥炵殑灝辨槸c鍙橀噺錛岃繖涔堟兂鍙兘灝遍敊浜?jiǎn)锛屾櫘閫氭儏鍐典笅鎴戜滑鍦ㄥ嚱鏁板唴榪涜鏅氬艱繑鍥炵殑鏃跺欏湪鍐呭瓨鏍堢┖闂村唴鍏跺疄鏄嚜鍔ㄤ駭鐢熶簡(jiǎn)涓涓復(fù)鏃跺彉閲弔emp錛屽畠鏄繑鍥炲肩殑涓涓壇鏈竴涓猚opy錛屽嚱鏁板湪return鐨勬椂鍊欏叾瀹炴槸return鐨勮繖涓復(fù)鏃朵駭鐢熺殑鍓湰銆?/p> <p>2銆佹妸榪斿洖鍊艱祴緇欏紩鐢細(xì)</p> <p class="code">#include <wbr><iostream> <wbr> <wbr> <wbr><br /> #include <wbr><string> <wbr> <wbr> <wbr><br /> using <wbr>namespace <wbr>std; <wbr><br />  <wbr><br /> float <wbr>c; <wbr><br /> float <wbr>test(float,float); <wbr><br /> void <wbr>main(int <wbr>argc,char* <wbr>argv[]) <wbr> <wbr> <wbr> <wbr> <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>float <wbr>&pn=test(3.0f,1.2f);//璀﹀憡:榪斿洖鐨勫皢鏄復(fù)鏃跺彉閲?pn寮曠敤灝嗘垚涓轟復(fù)鏃跺彉閲忕殑鍒悕! <wbr><br />  <wbr> <wbr> <wbr> <wbr>cout<<pn; <wbr><br />  <wbr> <wbr> <wbr> <wbr>cin.get(); <wbr><br /> } <wbr><br />  <wbr><br /> float <wbr>test(float <wbr>a,float <wbr>b) <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>c=a*b; <wbr><br />  <wbr> <wbr> <wbr> <wbr>return <wbr>c; <wbr><br /> }</p> <p>銆銆float &pn=test(3.0f,1.2f);榪欏彞鍦╞c涓兘澶熺紪璇戦氳繃錛屽洜涓篵c鎵╁睍璁劇疆涓轟復(fù)鏃跺彉閲忚緗紩鐢紝閭d箞涓存椂鍙橀噺鐨勭敓鍛藉懆鏈熷皢鍜屽紩鐢ㄧ殑鐢熷懡鍛ㄦ湡涓鑷達(dá)紝浣嗗湪vc涓嵈涓嶈兘閫氳繃緙栬瘧錛屽洜涓轟竴浣唗est()鎵ц榪囧悗涓存椂鍙橀噺娑堝け鍦ㄦ爤絀洪棿鍐咃紝榪欐椂鍊檖n灝嗘垚涓轟竴涓病鏈夋槑紜洰鏍囩殑寮曠敤錛屼弗閲嶇殑鏃跺欎細(xì)瀵艱嚧鍐呭瓨鍑洪敊銆?/p> <p>3銆佽繑鍥炲紩鐢ㄧ粰鍙橀噺鐨勬儏鍐碉細(xì)</p> <p class="code">#include <wbr><iostream> <wbr> <wbr> <wbr><br /> #include <wbr><string> <wbr> <wbr> <wbr><br /> using <wbr>namespace <wbr>std; <wbr><br />  <wbr><br /> <strong>float <wbr>c; </strong><wbr><br /> float& <wbr>test(float,float); <wbr><br /> void <wbr>main(int <wbr>argc,char* <wbr>argv[]) <wbr> <wbr> <wbr> <wbr> <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>float <wbr>pn=test(3.0f,1.2f); <wbr><br />  <wbr> <wbr> <wbr> <wbr>cout<<pn; <wbr><br />  <wbr> <wbr> <wbr> <wbr>cin.get(); <wbr><br /> } <wbr><br />  <wbr><br /> float <wbr>&test(float <wbr>a,float <wbr>b) <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>c=a*b; <wbr><br />  <wbr> <wbr> <wbr> <wbr>return <wbr>c; <wbr><br /> }</p> <p>銆銆榪欑榪斿洖寮曠敤緇欏彉閲忕殑鎯呭喌涓嬶紝鍦ㄥ唴瀛樹腑錛宼est()鎵鍦ㄧ殑鏍堢┖闂村唴騫舵病鏈変駭鐢熶復(fù)鏃跺彉閲忥紝鑰屾槸鐩存帴灝嗗叏灞鍙橀噺c鐨勫肩粰浜?jiǎn)鍙橀噺pn錛岃繖縐嶆柟寮忔槸鎴戜滑鏈涓烘帹鑽愮殑鎿嶄綔鏂瑰紡錛屽洜涓轟笉浜х敓涓存椂鍙橀噺鐩存帴璧嬪肩殑鏂瑰紡鍙互鑺傜渷鍐呭瓨絀洪棿鎻愰珮鏁堢巼錛岀▼搴忕殑鍙鎬т篃鏄瘮杈冨ソ鐨勩備絾鏄粎闄愪簬榪斿洖鐨勫彉閲忔槸鏍堜腑鍒嗛厤鐨勭┖闂達(dá)紝鎴栧叏灞鍙橀噺錛屽惁鍒欒繑鍥炵殑渚濈劧鏄復(fù)鏃跺彉閲忋備竴鑸浜庡唴緗被鍨嬶紝鍙互浣跨敤絎竴縐嶆儏鍐電洿鎺ヨ繑鍥炲壇鏈?/p> <p>4銆佹渶鍚庣殑涓縐嶆儏鍐墊槸鍑芥暟榪斿洖寮曠敤,騫朵笖鍙戝艱祴緇欎竴涓紩鐢ㄧ殑鎯呭喌錛?/p> <p class="code">#include <wbr><iostream> <wbr> <wbr> <wbr><br /> #include <wbr><string> <wbr> <wbr> <wbr><br /> using <wbr>namespace <wbr>std; <wbr><br />  <wbr><br /> float <wbr>c; <wbr><br /> float& <wbr>test(float,float); <wbr><br /> void <wbr>main(int <wbr>argc,char* <wbr>argv[]) <wbr> <wbr> <wbr> <wbr> <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>float <wbr>&pn=test(3.0f,1.2f); <wbr><br />  <wbr> <wbr> <wbr> <wbr>cout<<pn; <wbr><br />  <wbr> <wbr> <wbr> <wbr>cin.get(); <wbr><br /> } <wbr><br />  <wbr><br /> float <wbr>&test(float <wbr>a,float <wbr>b) <wbr><br /> { <wbr><br />  <wbr> <wbr> <wbr> <wbr>c=a*b; <wbr><br />  <wbr> <wbr> <wbr> <wbr>return <wbr>c; <wbr><br /> }</p> <p>銆銆榪欑鎯呭喌鍚屾牱涔熶笉浜х敓涓存椂鍙橀噺錛屽彲璇誨拰鎬ц兘閮藉緢濂斤紝浣嗘湁涓鐐瑰鏄撳紕閿欙紝灝辨槸褰揷鏄潪main鐨勫眬閮ㄥ彉閲忔垨鑰呮槸鍦ㄥ爢鍐呭瓨涓復(fù)鏃跺紑杈熷悗鏉ュ張琚玣ee鎺変簡(jiǎn)浠ュ悗鐨勫尯鍩燂紝榪欑鎯呭喌鍜岃繑鍥炵殑鎸囬拡鏄眬閮ㄦ寚閽堢殑鍚庢灉涓鏍蜂弗閲嶏紝浼?xì)瀵艰嚧寮曠敤鎸囧悜浜?jiǎn)涓涓笉鏄庣‘鐨勫湴鍧銆?/p> <p>----鍏朵粬鐢ㄦ硶錛?/p> <p> <wbr> <wbr> <wbr> 鍦ㄥ紩鐢ㄧ殑浣跨敤涓紝鍗曠函緇欐煇涓彉閲忓彇涓埆鍚嶆槸姣棤鎰忎箟鐨勶紝寮曠敤鐨勭洰鐨勪富瑕佺敤浜庡湪鍑芥暟鍙傛暟浼犻掍腑錛岃В鍐沖ぇ鍧楁暟鎹垨瀵硅薄鐨勪紶閫掓晥鐜囧拰絀洪棿涓嶅鎰忕殑闂銆傜敤寮曠敤浼犻掑嚱鏁扮殑鍙傛暟錛岃兘淇濊瘉鍙傛暟浼犻掍腑涓嶄駭鐢熷壇鏈紝鎻愰珮浼犻掔殑鏁堢巼錛屼笖閫氳繃const鐨勪嬌鐢紝淇濊瘉浜?jiǎn)寮曠敤浼犻掔殑瀹夊叏鎬с傚紩鐢ㄤ笌鎸囬拡鐨勫尯鍒槸錛屾寚閽堥氳繃鏌愪釜鎸囬拡鍙橀噺鎸囧悜涓涓璞″悗錛屽瀹冩墍鎸囧悜鐨勫彉閲忛棿鎺ユ搷浣溿傜▼搴忎腑浣跨敤鎸囬拡錛岀▼搴忕殑鍙鎬у樊錛涜屽紩鐢ㄦ湰韜氨鏄洰鏍囧彉閲忕殑鍒悕錛屽寮曠敤鐨勬搷浣滃氨鏄鐩爣鍙橀噺鐨勬搷浣溿?/p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:15 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65371.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C璇█涓嶤++璇█鐨勪簰鐩歌皟鐢紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65370.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:14:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65370.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65370.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65370.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65370.html</trackback:ping><description><![CDATA[<p>涓銆丆璇█涓皟鐢–++鍑芥暟<br><br>灝?C++ 鍑芥暟澹版槑涓篳`extern "C"''錛堝湪浣犵殑 C++ 浠g爜閲屽仛榪欎釜澹版槑錛夛紝鐒跺悗璋冪敤瀹冿紙鍦ㄤ綘鐨?C 鎴栬?C++ 浠g爜閲岃皟鐢級(jí)銆備緥濡傦細(xì)</p> <p>// C++ code:</p> <p>extern "C" void f(int);</p> <p>void f(int i)</p> <p>{</p> <p> <wbr> <wbr> <wbr> <wbr> // ...</p> <p>}</p> <p>鐒跺悗錛屼綘鍙互榪欐牱浣跨敤 f()錛?/p> <p> <wbr></p> <p>void f(int);</p> <p>void cc(int i)</p> <p>{</p> <p> <wbr> <wbr> <wbr> f(i);</p> <p> <wbr> <wbr></p> <p>}</p> <p>褰撶劧錛岃繖鎷涘彧閫傜敤浜庨潪鎴愬憳鍑芥暟銆傚鏋滀綘鎯寵鍦?C 閲岃皟鐢ㄦ垚鍛樺嚱鏁幫紙鍖呮嫭铏氬嚱鏁幫級(jí)錛屽垯闇瑕佹彁渚涗竴涓畝鍗曠殑鍖呰錛坵rapper錛夈備緥濡傦細(xì)</p> <p>// C++ code:</p> <p>class C</p> <p>{</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> // ...</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> virtual double f(int);</p> <p>};</p> <p>extern "C" double call_C_f(C* p, int i) // wrapper function</p> <p>{</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> return p->f(i);</p> <p>}</p> <p>鐒跺悗錛屼綘灝卞彲浠ヨ繖鏍瘋皟鐢?C::f()錛?/p> <p> <wbr></p> <p>double call_C_f(struct C* p, int i);</p> <p>void ccc(struct C* p, int i)</p> <p>{</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> double d = call_C_f(p,i);</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></p> <p>}</p> <p>濡傛灉浣犳兂鍦?C 閲岃皟鐢ㄩ噸杞藉嚱鏁幫紝鍒欏繀欏繪彁渚涗笉鍚屽悕瀛楃殑鍖呰錛岃繖鏍鋒墠鑳借 C 浠g爜璋冪敤銆備緥濡傦細(xì)</p> <p>// C++ code:</p> <p>void f(int);</p> <p>void f(double);</p> <p>extern "C" void f_i(int i) { f(i); }</p> <p>extern "C" void f_d(double d) { f(d); }</p> <p>鐒跺悗錛屼綘鍙互榪欐牱浣跨敤姣忎釜閲嶈澆鐨?f()錛?/p> <p> <wbr></p> <p>void f_i(int);</p> <p>void f_d(double);</p> <p>void cccc(int i,double d)</p> <p>{</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> f_i(i);</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> f_d(d);</p> <p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></p> <p>}</p> <p>娉ㄦ剰錛岃繖浜涙妧宸т篃閫傜敤浜庡湪 C 閲岃皟鐢?C++ 綾誨簱錛屽嵆浣夸綘涓嶈兘錛堟垨鑰呬笉鎯籌級(jí)淇敼 C++ 澶存枃浠躲?/p> <p><br>浜屻丆++涓皟鐢–鍑芥暟<br><br>瑕佽浣犵殑C浠g爜鏃㈣兘琚獵浠g爜鍙堣兘琚獵++璋冪敤铏借瀹規(guī)槗錛屼絾鏄繕鏄湁闇瑕佹敞鎰忕殑鍦版柟銆?/p> <p style="FONT-SIZE: 12pt">鐜版湁涓変釜鏂囦歡鍒嗗埆濡備笅錛?/p> <p style="FONT-SIZE: 12pt">#ifndef TESTC_H<br>#define TESTC_H<br> <br>#ifdef __cplusplus<br>extern "C" {<br>#endif<br> <br>int add(int a, int b);<br>      <br>#ifdef __cplusplus<br>}<br>#endif<br> <br>#endif<br> <br> <br>#include "TestC.h"<br> <br>int add(int a, int b)<br>{<br>    return (a + b);<br>}<br> <br>#include "stdio.h"<br>#include "TestC.h"<br> <br>int main()<br>{<br>       printf("add = %d\n", add(2, 5));<br>      <br>       return 0;<br>}<br> <br>璇存槑錛?br>file TestC.h鏄疌鐨勫ご鏂囦歡錛宖ile TestC.c鏄叾瀹炵幇鏂囦歡錛宖ile TestCpp.cpp鏄皟鐢–鍑芥暟鐨凜++鏂囦歡銆?br>鏂囦歡TestC.h涓殑TESTC_H瀹氫箟鏄負(fù)浜?jiǎn)澶存枃錃g淇濇姢錛?#8221; #ifdef __cplusplus”榪欎釜涓嶈兘緙哄皯錛屼綘鍙互鍘繪煡鐪婥鐨勬爣鍑嗗簱澶存枃浠朵腑閮芥湁榪欎釜錛屽”stdio.h”銆傛湁浜?jiǎn)杩欎釜瀹従~栬瘧鍣ㄥ氨鐭ラ亾鐜板湪鏄疌榪樻槸C++鍦ㄨ皟鐢ㄥ畠銆?br>涓轟粈涔堣鍖哄垎C涓嶤++璋冪敤鍛紵鍏舵繁灞傛鍘熷洜鏄洜涓篊鍜孋++緙栬瘧鍣ㄥ湪緙栬瘧鍜岄摼鎺ユ椂瀵逛簬鍑芥暟鐨勫鐞嗕笉涓鏍楓侰++涓轟簡(jiǎn)鏀寔鍑芥暟閲嶈澆鍦ㄧ紪璇戞椂浼?xì)鍔犲叆鍑芥暟鍙傛暟鍙?qiáng)綾誨瀷淇℃伅銆傚涓婇潰鐨刟dd鏂規(guī)硶錛孋緙栬瘧鍣ㄧ紪璇戝悗鍦ㄧ鍙峰簱涓殑鍚嶅瓧涓篲add錛岃孋++緙栬瘧鍣ㄥ垯浼?xì)漶旂敓鍍廮add_int_int涔嬬被鐨勫悕瀛椼侰++姝f槸渚濋潬榪欑鏈哄埗瀹炵幇浜?jiǎn)鍑芥暟鐨勯噸铦层?br>extern鍏抽敭瀛楄〃紺哄皢鍑芥暟鎴栧彉閲忓0鏄庝負(fù)鍏ㄥ眬綾誨瀷錛屼笌涔嬬浉瀵瑰簲鐨勬槸static銆俿tatic闄愬畾鍑芥暟鎴栧彉閲忕殑浣滅敤鍩熶負(fù)鏈枃浠躲俥xtern榪樻湁涓涓綔鐢ㄥ氨鏄笌”C”榪炲湪涓璧蜂嬌鐢紝鍗砮xtern “C”閫氱煡緙栬瘧鍣ㄥ皢extern “C”鎵鍖呭惈鐨勪唬鐮佹寜鐓鐨勬柟寮忕紪璇戝拰閾炬帴</p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:14 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65370.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>union錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65368.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:10:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65368.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65368.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65368.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65368.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class="articleContent" id="articleBody"> <p>鍓嶈█<br />銆銆鐔熸?zhèn)塁鐨勭▼搴忓憳閮界煡閬搖nion錛堣仈鍚堜綋錛夌殑鐢ㄦ硶錛屽埄鐢╱nion鍙互鐢ㄧ浉鍚岀殑瀛樺偍絀洪棿瀛樺偍涓嶅悓鍨嬪埆鐨勬暟鎹被鍨嬶紝浠庤岃妭鐪佸唴瀛樼┖闂淬傚綋璁塊棶鍏跺唴鎴愬憳鏃跺彲鐢?."鍜?->"鏉ョ洿鎺ヨ闂傚湪C++鍑虹幇鍚庯紝瀹冪戶鎵夸簡(jiǎn)union騫朵繚鐣欎簡(jiǎn)鍏跺湪C涓殑鐗規(guī)с備絾鏄湪C++涓殑union鍙堟湁浜?jiǎn)鏂扮殑鎵╁睍锛寴q欓渶瑕佸ぇ瀹朵簡(jiǎn)瑙o紝瑕佷笉鐒朵綘浼?xì)鎰熷埌璐硅В鍜寴q鋒儜銆備笅闈㈡垜璁蹭袱鐐廣?br /><br />銆銆涓銆佸湪union涓瓨鍌ㄥ璞?br />銆銆鍦–涓璾nion涓彲浠ュ瓨鍌ㄤ換鎰忕被鍨嬬殑鍐呯疆鏁版嵁綾誨瀷錛岄偅涔堝湪C++涓璾nion鏄惁鍙互瀛樺偍瀵硅薄鍛紵榪樻槸璁╂垜浠湅涓涓緥瀛愬惂錛岃繖姣斾換浣曡█璇兘鑳借鏄庨棶棰橈紝涓嶆槸鍚楋紵<br />#pragma warning(disable : 4786)<br />#include<br />using namespace std;<br />class TestUnion<br />{<br /> <wbr> <wbr> <wbr> public:<br />銆 <wbr> TestUnion(long l):data_(l)<br />銆 <wbr> {<br />銆銆};<br />銆 <wbr> int data_;<br />};<br />typedef union _tagUtype_<br />{<br />銆 <wbr> <span style="color: #ffff00;"><strong>TestUnion</strong></span> obj;<br />}UT;<br />int main (void)<br />{<br />銆 <wbr> return 0;<br />}<br />銆銆榪欐牱涓嶈錛寀nion涓笉鍙互瀛樺偍TestUnion綾葷殑瀵硅薄錛屼絾鍦–涓璾nion鍙互瀛樺偍struct鍛錛屼負(fù)浠涔堜笉鑳藉瓨鍌ㄧ被鐨勫璞″憿錛熷緢綆鍗曪紝璇烽棶錛屽湪C涓璾nion鍙互瀛樺偍甯︽湁鏋勯犲嚱鏁扮殑struct鍚楋紵瀵逛簡(jiǎn)錛屽湪C涓殑struct鏄病鏈夋瀯閫犲嚱鏁扮殑銆傛墍浠ュ鏋淐++涓璾nion鍙互瀛樺偍鏈夋瀯閫犲嚱鏁扮殑綾葷殑瀵硅薄灝變笉澶鍚堥昏緫錛岄偅涓嶆槸璇碈++鍜孋瀹屽叏鍏煎鍚楋紵涓嶉敊錛屾鍥犱負(fù)榪欎竴鐐癸紝<strong style="color: #ffff00;">C++涓璾nion涓嶅彲浠ュ瓨鍌ㄦ湁鏋勯犲嚱鏁扮殑綾葷殑瀵硅薄</strong>錛屼絾鏄彲浠ュ瓨鍌?strong style="color: #ffff00;">涓嶅甫鏋勯犲嚱鏁?/strong>鐨勭被鐨勫璞★紝榪欐牱灝卞拰C淇濇寔涓鑷翠簡(jiǎn)錛屼笉鎯充俊浣犺瘯璇曘傚TestUnion綾葷殑澹版槑榪涜濡備笅淇敼錛?br />class TestUnion<br />{<br />銆 <wbr> public:<br />銆 <wbr> int data_;<br />};<br />銆銆鍐嶈繘琛岀紪璇戯紝涓鍒嘜K錛併備絾鏄繖鏍峰嵈澶卞幓浜?jiǎn)C++鐨勬瀯閫犲垵濮嬪寲鐗規(guī)э紝榪欐牱鍋氭槸娌℃湁浠諱綍鎰忎箟鐨勶紝鎴戝彧鏄湪璇村叾鍦–++涓殑璇箟錛屽茍涓嶆槸鎺ㄨ崘澶у浣跨敤錛堢粷瀵逛笉鎺ㄨ崘錛夈備絾鏄垜浠彲浠ュ湪union涓瓨鍌ㄥ璞$殑鎸囬拡錛屼粠鑰屽紩鐢ㄤ笉鍚岀殑瀵硅薄綾誨瀷銆備笉鐢ㄦ垜鍐嶅璇翠簡(jiǎn)鍚э紝澶у榪樻槸璇曡瘯鍚э紒銆</p> <p> <wbr> <wbr> <wbr> 鍚岀悊錛岄櫎浜?jiǎn)涓嶈兘鍔犳瀯閫犲嚱鏁幫紝鏋愭瀯鍑芥暟/鎷瘋礉鏋勯犲嚱鏁?璧嬪艱繍綆楃涔熸槸涓嶅彲浠ュ姞銆傛澶栵紝濡傛灉鎴戜滑鐨勭被涓寘鍚簡(jiǎn)浠諱綍virtual鍑芥暟錛岀紪璇戞椂錛屾垜浠皢鏀跺埌濡備笅鐨勯敊璇俊鎭?<br />銆銆error C2621: union ‘__unnamed‘ : member ‘obj‘ has copy constructor<br />銆銆鎵浠ワ紝鎵撴秷鍦╱nion涓寘鍚湁鏋勯犲嚱鏁?鏋愭瀯鍑芥暟/鎷瘋礉鏋勯犲嚱鏁?璧嬪艱繍綆楃/铏氬嚱鏁扮殑綾葷殑瀵硅薄鐨勫康澶達(dá)紝鑰佽佸疄瀹炵敤浣犵殑<strong style="color: #ffff00;">C椋庢牸struct</strong>鍚?<br /><br />浜屻佺被涓璾nion鐨勫垵濮嬪寲<br />銆銆鐢變簬union鐨勫叡浜唴瀛樼壒鐐癸紝鎴戜滑鍙互浣挎垜浠殑綾誨瓨鍌ㄤ笉鍚岀殑鍨嬪埆鑰屼笉嫻垂鍐呭瓨絀洪棿錛屽湪綾諱腑鎴戜滑鍙互澹版槑涓涓猽nion瀛樺偍涓嶅悓鍨嬪埆鐨勬寚閽堬紝紺轟緥濡備笅錛?br />#pragma warning(disable : 4786)<br />#include<br />using namespace std;<br />class TestUnion<br />{<br /> <wbr> <wbr> <wbr> enum StoreType{Long,Const_CharP};<br /> <wbr> <wbr> <wbr> union<br /> <wbr> <wbr> <wbr> {<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> const char* ch_;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> long l_;<br /> <wbr> <wbr> <wbr> <wbr>}data_;<br /> <wbr> <wbr> <wbr> StoreType stype_;</p> <p>public:</p> <p> <wbr> <wbr> <wbr> TestUnion(TestUnion&);<br /> <wbr> <wbr> <wbr> TestUnion& operator=(const TestUnion&);<br /> <wbr> <wbr> <wbr> TestUnion(const char* ch);<br /> <wbr> <wbr> <wbr> TestUnion(long l);<br /> <wbr> <wbr> <wbr> operator const char*() const {return data_.ch_;}<br /> <wbr> <wbr> <wbr> operator long() const {return data_.l_;}<br />};<br />TestUnion::TestUnion(const char* ch):data_.ch_(ch),stype_(Const_CharP)<br />{<br />}<br />TestUnion::TestUnion(long l):data_.l_(l),stype_(Long)<br />{<br />}<br />int main (void)<br />{<br /> <wbr> <wbr> <wbr> TestUnion pszobj("yuankai");<br /> <wbr> <wbr> <wbr> TestUnion lobj(1234);<br /> <wbr> <wbr> <wbr> cout<(pszobj)< cout<<br /> <wbr> <wbr> <wbr> return 0;<br />}<br />鐪熸槸涓嶅垢錛岀紪璇戦兘閫氫笉榪囷紝濂借薄娌℃湁浠涔堥棶棰樺憖錛屼負(fù)浠涔堝憿錛焏ata_.ch_(ch)鍜宒ata_.l_(l)鏈夐棶棰樺悧錛熷鏋滀綘闂竴涓狢紼嬪簭鍛樹粬浼?xì)鍛婅瘔浣犲Q岀粷瀵規(guī)病闂銆備綘涓嶄細(xì)鍘繪鐤戠紪璇戝櫒鏈夐棶棰樺惂錛佷笉濂芥剰鎬濓紒鎴戜竴寮濮嬪氨鏄繖涔堟兂鐨勶紝鐪熸槸鎯劎銆傝垂瑙o紝榪鋒儜銆傝鎴戜滑鏉ョ湅鐪嬫瀯閫燭estUnion瀵硅薄鏃跺彂鐢熶簡(jiǎn)浠涔堬紝榪欐牱浣犲氨浼?xì)鏄庣櫧浜?jiǎn)銆傚綋鍒涘緩TestUnion瀵硅薄鏃訛紝鑷劧瑕佽皟鐢ㄥ叾鐩稿簲鐨勬瀯閫犲嚱鏁幫紝鍦ㄦ瀯閫犲嚱鏁頒腑褰撶劧瑕佽皟鐢ㄥ叾鎴愬憳鐨勬瀯閫犲嚱鏁幫紝鎵浠ュ叾瑕佸幓<strong style="color: #ffff00;">璋冪敤union鎴愬憳鐨勬瀯閫犲嚱鏁幫紝浣嗘槸鍏朵負(fù)鍖垮悕鐨勶紝鏈夋病鏈夋瀯閫犲嚱鏁板彲璋冪敤錛屾墍浠ュ嚭閿?/strong>銆傚緢鏄庢樉鍦–++涓璾nion鍜宑lass涓鏍峰畠鍙互鏈夋瀯閫犲嚱鏁幫紝涓嶈兘濡傛鐩存帴寮曠敤鍏舵垚鍛樸俿truct鍚屾牱鏈夎繖闄愬埗銆傚彧瑕佹垜浠粰鍏跺畾涔変竴涓瀯閫犲嚱鏁頒粈涔堥棶棰橀兘瑙e喅浜?jiǎn)銆傜ず渚嬪涓嬶細(xì)<br /><br />class TestUnion<br />{<br /> <wbr> <wbr> <wbr> enum StoreType{Long,Const_CharP};<br /> <wbr> <wbr> <wbr> union DataUnion //<strong style="color: #ffff00;">涓嶈兘鍖垮悕</strong><br /> <wbr> <wbr> <wbr> <wbr>{<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> DataUnion(const char*); //澹版槑const char*鏋勯犲嚱鏁?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> DataUnion(long); //澹版槑long鏋勯犲嚱鏁?br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> const char* ch_;<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> long l_;<br /> <wbr> <wbr> <wbr> <wbr> }data_;<br /> <wbr> <wbr> <wbr> <wbr> StoreType stype_;<br />public:<br /> <wbr> <wbr> <wbr> <wbr> TestUnion(TestUnion&);<br /> <wbr> <wbr> <wbr> <wbr> TestUnion& operator=(const TestUnion&);<br /> <wbr> <wbr> <wbr> <wbr> TestUnion(const char* ch);<br /> <wbr> <wbr> <wbr> <wbr> TestUnion(long l);<br /> <wbr> <wbr> <wbr> <wbr> operator const char*() const {return data_.ch_;}<br /> <wbr> <wbr> <wbr> <wbr> <wbr>operator long() const {return data_.l_;}<br />};<br />TestUnion::TestUnion(const char* ch):data_(ch),stype_(Const_CharP)<br />{//娉ㄦ剰data_(ch)錛岃繖閲岀洿鎺ュ紩鐢╠ata_<br />}<br />TestUnion::TestUnion(long l):data_(l),stype_(Long)<br />{//娉ㄦ剰data_(l)錛岃繖閲岀洿鎺ュ紩鐢╠ata_<br />}<br />TestUnion::DataUnion::DataUnion(const char* ch):ch_(ch)<br />{<br />}<br />TestUnion::DataUnion::DataUnion(long l):l_(l)<br />{<br />}<br /> <wbr> <wbr> <wbr> 涓嶈繃鎴戞洿鎺ㄨ崘濡備笅鐨勭紪紼嬮鏍?<br />class TestUnion<br />{<br />銆銆union DataUnion//<span style="color: #ffff00;">鍏跺疄浠呬粎鏄潪鍖垮悕</span><br />銆銆{<br />銆銆 <wbr> <wbr> <wbr> const char* ch_;<br />銆銆 <wbr> <wbr> <wbr> long l_;<br />銆銆} data_;<br />public:<br />銆銆TestUnion(const char* ch);<br />銆銆TestUnion(long l);<br />};<br />TestUnion::TestUnion(const char* ch)<br />{<br />銆銆data_.ch_ = ch;<br />}<br />TestUnion::TestUnion(long l)<br />{<br />銆銆data_.l_ = l;<br />}</p> </div><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:10 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65368.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>闅忔満鏁扮敓鎴愶紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65367.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:09:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65367.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65367.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65367.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65367.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=articleContent id=articleBody> <p>#include<time.h><br>#include<iostream><br>using namespace std;<br>void main()<br>{<br> <wbr> <wbr> <wbr> int num = 0;<br> <wbr> <wbr> <wbr> <strong><font color=#006600>srand((unsigned)time(NULL));<br></font></strong> <wbr> <wbr> <wbr> for (int i=0; i<10; ++i)<br> <wbr> <wbr> <wbr> {<br> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font color=#006600><strong>num = rand()%10;<br></strong></font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> cout<<num<<endl;<br> <wbr> <wbr> <wbr> }</p> <p>}<br></p> </div> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:09 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65367.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍐呯疆綾誨瀷鏈灝忓瓨鍌ㄧ┖闂達(dá)紙32浣嶆満鍙傝冿級(jí)錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65365.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:02:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65365.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65365.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65365.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65365.html</trackback:ping><description><![CDATA[<p>bool <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -</p> <p>char <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>    8bits</p> <p>wchar_t <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> 16bits</p> <p>short <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>    16bits錛堝崐涓満鍣ㄥ瓧闀匡級(jí)</p> <p>int <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>      16bits錛堜竴涓満鍣ㄥ瓧闀匡紝閫氬父澶у皬32bits錛?6bits涔熻鏄渶灝忓瓨鍌ㄧ┖闂達(dá)級(jí)</p> <p>long <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>    32bits錛堜竴鎴栦袱涓満鍣ㄥ瓧闀匡級(jí)</p> <p>float <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>     <wbr> 32bits錛?浣嶆湁鏁堟暟瀛楋紝涓鑸竴涓満鍣ㄥ瓧闀匡級(jí)</p> <p>double <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>  64bits錛?0浣嶆湁鏁堟暟瀛楋紝涓鑸袱涓満鍣ㄥ瓧闀匡級(jí)</p> <p>long double <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>96鎴?28bits錛?0浣嶆湁鏁堟暟瀛楋紝涓鑸?鎴?鏈哄櫒瀛楅暱錛?/p> <font face=寰蔣闆呴粦 color=#8e5f00 size=5></font> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:02 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65365.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>const錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65364.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:01:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65364.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65364.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65364.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65364.html</trackback:ping><description><![CDATA[<p><span lang="EN-US" style="font-size: 9pt; font-family: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" xml:lang="EN-US"><font face="Times New Roman"><font size="3">O銆?/font></font></span></p> <p><font face="Times New Roman" size="3"> <wbr> <wbr> <wbr> <wbr> <wbr></font> <font size="3"><font face="Times New Roman">const int r[ ]={1,2,3,4};<br /> <wbr> <wbr> <wbr> <wbr> <wbr> struct S {int a,b;};<br /> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>const S s[ ]={(1,2),(3.4)}; //</font>浠ヤ笂涓ょ閮芥槸甯擱噺闆嗗悎錛岀紪璇戝櫒浼?xì)湄?fù)鍏跺垎閰嶅唴瀛橈紝鎵浠ヤ笉鑳藉湪緙栬瘧鏈熼棿浣跨敤鍏朵腑鐨勫鹼紝渚嬪錛?font face="Times New Roman">int temp[r[2]];</font>榪欐牱鐨勭紪璇戝櫒浼?xì)鎶ュ憡涓嶈兘鎵惧埌甯搁噺琛ㄨ緫旨忋?/font></p> <p> <wbr></p> <p><font size="3">涓銆佸浜庢寚閽?/font></p> <p><font face="Times New Roman"><font size="3">1.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">const int *r=&x; //</font></font><font size="3">澹版槑<font face="Times New Roman">r</font>涓轟竴涓寚鍚戝父閲忕殑<font face="Times New Roman">x</font>鐨勬寚閽堬紝<font face="Times New Roman">r</font>鎸囧悜鐨勫璞′笉鑳借淇敼錛屼絾浠栧彲浠ユ寚鍚戜換浣曞湴鍧鐨勫父閲忋?/font></p> <p><font face="Times New Roman"><font size="3">2.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">int const *r=&x; //</font></font><font size="3">涓庣敤娉?font face="Times New Roman">1</font>瀹屽叏絳変環(huán)錛屾病鏈変換浣曞尯鍒?/font></p> <p><font face="Times New Roman"><font size="3">3.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">int * const r=&x; //</font></font><font size="3">澹版槑<font face="Times New Roman">r</font>涓轟竴涓父閲忔寚閽堬紝浠栨寚鍚?font face="Times New Roman">x</font>錛?font face="Times New Roman">r</font>榪欎釜鎸囬拡鐨勬寚鍚戜笉鑳借淇敼錛屼絾浠栨寚鍚戠殑鍦板潃鐨勫唴瀹瑰彲浠ヤ慨鏀廣?/font></p> <p><font face="Times New Roman"><font size="3">4.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">const int * const r=&x; //</font></font><font size="3">緇煎悎<font face="Times New Roman">1</font>銆?font face="Times New Roman">3</font>鐢ㄦ硶錛?font face="Times New Roman">r</font>鏄竴涓寚鍚戝父閲忕殑甯擱噺鍨嬫寚閽堛?/font></p> <p> <wbr></p> <p><font size="3">浜屻佸浜庣被鍨嬫鏌?/font></p> <p><font size="3"> <wbr> <wbr> <wbr> 鍙互鎶婁竴涓潪<font face="Times New Roman">const</font>瀵硅薄璧嬬粰涓涓寚鍚?font face="Times New Roman">const</font>鐨勬寚閽堬紝鍥犱負(fù)鏈夋椂鍊欐垜浠笉鎯充粠榪欎釜鎸囬拡鏉ヤ慨鏀瑰叾瀵硅薄鐨勫鹼紙鍙傛暟浼犻掞級(jí)錛涗絾鏄笉鍙互鎶婁竴涓?font face="Times New Roman">const</font>瀵硅薄璧嬪肩粰涓涓潪<font face="Times New Roman">const</font>鎸囬拡錛屽洜涓鴻繖鏍峰彲鑳戒細(xì)閫氳繃榪欎釜鎸囬拡鏀瑰彉鎸囧悜瀵硅薄鐨勫鹼紝浣嗕篃瀛樺湪浣胯繖縐嶆搷浣滈氳繃鐨勫悎娉曞寲鍐欐硶錛屼嬌鐢ㄧ被鍨嬪己鍒惰漿鎹㈠彲浠ラ氳繃鎸囬拡鏀瑰彉<font face="Times New Roman">const</font>瀵硅薄錛?/font><br /><font face="Times New Roman" size="3">const int r=100;<br />int * ptr = const_cast<int*>(&r); <wbr> //C++</font><font size="3">鏍囧噯錛?font face="Times New Roman">C</font>璇█浣跨敤錛?font face="Times New Roman">int * ptr =(int*)&r;錛堝叿浣撹瑙佸己鍒剁被鍨嬭漿鎹㈢殑璇﹁В錛?/font></font></p> <p> <wbr></p> <font size="3">涓夈佸浜庡瓧絎︽暟緇?/font> <p><font size="3"> <wbr> <wbr> <wbr> 濡?font face="Times New Roman">char * name = “china”;</font> 榪欐牱鐨勮鍙ワ紝鍦ㄧ紪璇戞椂鏄兘澶熼氳繃鐨勶紝浣嗘槸<font face="Times New Roman">”china”</font>鏄父閲忓瓧絎︽暟緇勶紝浠諱綍鎯充慨鏀逛粬鐨勬搷浣滀篃鑳介氳繃緙栬瘧浣嗕細(xì)寮曡搗榪愯鏃墮敊璇紝濡傛灉鎴戜滑鎯充慨鏀瑰瓧絎︽暟緇勭殑璇濆氨瑕佷嬌鐢?font face="Times New Roman">char name[ ] = “china”;</font> 榪欑褰㈠紡銆?/font></p> <p> <wbr></p> <p><font size="3">鍥涖佸浜庡嚱鏁?/font></p> <p><font face="Times New Roman"><font size="3">1.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">void Fuction1 ( const int r ); //</font></font><font size="3">姝ゅ涓哄弬鏁頒紶閫?font face="Times New Roman">const</font>鍊鹼紝鎰忎箟鏄彉閲忓垵鍊間笉鑳借鍑芥暟鏀瑰彉銆?/font></p> <p><font face="Times New Roman"><font size="3">2.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">const int Fuction1 (int); //</font></font><font size="3">姝ゅ榪斿洖<font face="Times New Roman">const</font>鍊鹼紝鎰忔濇寚榪斿洖鐨勫師鍑芥暟閲岀殑鍙橀噺鐨勫垵鍊間笉鑳借淇敼錛屼絾鏄嚱鏁版寜鍊艱繑鍥炵殑榪欎釜鍙橀噺琚埗鎴愬壇鏈紝鑳戒笉鑳借淇敼灝辨病鏈変簡(jiǎn)鎰忎箟錛屽畠鍙互琚祴緇欎換浣曠殑<font face="Times New Roman">const</font>鎴栭潪<font face="Times New Roman">const</font>綾誨瀷鍙橀噺錛屽畬鍏ㄤ笉闇瑕佸姞涓婅繖涓?font face="Times New Roman">const</font>鍏抽敭瀛椼備絾榪欏彧瀵逛簬鍐呴儴綾誨瀷鑰岃█錛堝洜涓哄唴閮ㄧ被鍨嬭繑鍥炵殑鑲畾鏄竴涓鹼紝鑰屼笉浼?xì)杩斿洖涓涓彉閲忥紝涓嶄細(xì)浣滀負(fù)宸﹀間嬌鐢級(jí)錛屽浜庣敤鎴瘋嚜瀹氫箟綾誨瀷錛岃繑鍥炲兼槸甯擱噺鏄潪甯擱噸瑕佺殑錛岃涓嬮潰鏉℃<font face="Times New Roman">3</font>銆?/font></p> <p><font face="Times New Roman"><font size="3">3.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font></p> <p><font face="Times New Roman"><font size="3">Class CX; //</font></font><font size="3">鍐呴儴鏈夋瀯閫犲嚱鏁幫紝澹版槑濡?/font><font size="3"><font face="Times New Roman">CX(int r =0)<br />CX <wbr> Fuction1 () { return CX(); }<br />const CX Fuction2 () { return CX(); }<br /></font>濡傛湁涓婇潰鐨勮嚜瀹氫箟綾?font face="Times New Roman">CX</font>錛屽拰鍑芥暟<font face="Times New Roman">Fuction1()</font>鍜?font face="Times New Roman">Fuction2(),</font>鎴戜滑榪涜濡備笅鎿嶄綔鏃訛細(xì)</font><br /><font face="Times New Roman" size="3">Fuction1() = CX(1); //</font><font size="3">娌℃湁闂錛屽彲浠ヤ綔涓哄乏鍊艱皟鐢?/font><br /><font face="Times New Roman" size="3">Fuction2() = CX(1); //</font><font size="3">緙栬瘧閿欒錛?font color="#ff0000"><font face="Times New Roman"><span style="color: #ffff00;">const</span></font><span style="color: #ffff00;">榪斿洖鍊肩姝綔涓哄乏鍊艱皟鐢紝鍥犱負(fù)宸﹀兼妸榪斿洖鍊間綔涓哄彉閲忎細(xì)淇敼鍏惰繑鍥炲鹼紝</span><font face="Times New Roman"><span style="color: #ffff00;">const</span></font><span style="color: #ffff00;">澹版槑紱佹榪欑淇敼</span></font>銆?/font></p> <p><font face="Times New Roman"><font size="3">4.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font> <font size="3">鍑芥暟涓寚閽堢殑<font face="Times New Roman">const</font>浼犻掑拰榪斿洖錛?/font><br /><font face="Times New Roman" size="3">int F1 (const char * pstr); //</font><font size="3">浣滀負(fù)浼犻掔殑鏃跺欎嬌鐢?font face="Times New Roman">const</font>淇グ鍙互淇濊瘉涓嶄細(xì)閫氳繃榪欎釜鎸囬拡鏉ヤ慨鏀逛紶閫掑弬鏁扮殑鍒濆鹼紝榪欓噷鍦ㄥ嚱鏁板唴閮ㄤ換浣曚慨鏀?font face="Times New Roman">*pstr</font>鐨勪紒鍥鵑兘浼?xì)寮曡碉L(fēng)紪璇戦敊璇?/font><br /><font face="Times New Roman" size="3">const char * F2 (); //</font><font size="3">鎰忎箟鏄嚱鏁拌繑鍥炵殑鎸囬拡鎸囧悜鐨勫璞℃槸涓涓?font face="Times New Roman">const</font>瀵硅薄錛屽畠蹇呴』璧嬬粰涓涓悓鏍鋒槸鎸囧悜<font face="Times New Roman">const</font>瀵硅薄鐨勬寚閽堛?/font><br /><font face="Times New Roman" size="3">const char * const F3(); //</font><font size="3">姣斾笂闈㈠浜?jiǎn)涓涓?font face="Times New Roman">const</font>錛岃繖涓?font face="Times New Roman">const</font>鐨勬剰涔夊彧鏄湪浠栬鐢ㄤ綔宸﹀兼椂鏈夋晥錛屽畠琛ㄦ槑浜?jiǎn)杩欎釜鎸囬拡闄や簡(jiǎn)鎸囧?font face="Times New Roman">const</font>瀵硅薄澶栵紝瀹冩湰韜篃涓嶈兘琚慨鏀癸紝鎵浠ュ氨涓嶈兘褰撲綔宸﹀兼潵澶勭悊銆?/font></p> <p><font face="Times New Roman"><font size="3">5.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font> <font size="3">鍑芥暟涓紩鐢ㄧ殑<font face="Times New Roman">const</font>浼犻掞細(xì)</font><br /><font face="Times New Roman" size="3">void F1 ( const X& px); //</font><font size="3">榪欐牱鐨勪竴涓?font face="Times New Roman">const</font>寮曠敤浼犻掑拰鏈鏅氱殑鍑芥暟鎸夊間紶閫掔殑鏁堟灉鏄竴妯′竴鏍風(fēng)殑錛屼粬紱佹瀵瑰紩鐢ㄧ殑瀵硅薄鐨勪竴鍒囦慨鏀癸紝鍞竴涓嶅悓鐨勬槸鎸夊間紶閫掍細(xì)鍏堝緩绔嬩竴涓被瀵硅薄鐨勫壇鏈紝鐒跺悗浼犻掕繃鍘伙紝鑰屽畠鐩存帴浼犻掑湴鍧錛屾墍浠ヨ繖縐嶄紶閫掓瘮鎸夊間紶閫掓洿鏈夋晥銆?/font><br /><font size="3"><font face="Times New Roman"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font> 鍙﹀鍙湁寮曠敤鐨?font face="Times New Roman">const</font>浼犻掑彲浠ヤ紶閫掍竴涓?strong>涓存椂瀵硅薄</strong>錛屽洜涓轟復(fù)鏃跺璞¢兘鏄?font face="Times New Roman">const</font>灞炴э紝涓旀槸涓嶅彲瑙佺殑錛屼粬鐭椂闂村瓨鍦ㄤ竴涓眬閮ㄥ煙涓紝鎵浠ヤ笉鑳戒嬌鐢ㄦ寚閽堬紝鍙湁寮曠敤鐨?font face="Times New Roman">const</font>浼犻掕兘澶熸崟鎹夊埌榪欎釜瀹朵紮銆?/font></p> <p> <wbr></p> <p><font size="3">浜斻?/font><font style="font-size: 16px">瀵逛簬綾?/font></p> <p><font face="Times New Roman"><font size="3">1.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font> <font size="3">棣栧厛錛屽浜?font face="Times New Roman">const</font>鐨勬垚鍛樺彉閲忥紝鍙兘鍦ㄦ瀯閫犲嚱鏁伴噷浣跨敤鍒濆鍖栨垚鍛樺垪琛ㄦ潵鍒濆鍖栵紝璇曞浘鍦ㄦ瀯閫犲嚱鏁頒綋鍐呰繘琛屽垵濮嬪寲<font face="Times New Roman">const</font>鎴愬憳鍙橀噺浼?xì)寮曡碉L(fēng)紪璇戦敊璇傚垵濮嬪寲鎴愬憳鍒楄〃褰㈠錛?/font><br /><font face="Times New Roman" size="3">X:: X ( int ir ): r(ir) {} //</font><font size="3">鍋囪<font face="Times New Roman">r</font>鏄被<font face="Times New Roman">X</font>鐨?font face="Times New Roman">const</font>鎴愬憳鍙橀噺</font></p> <p><font face="Times New Roman"><font size="3">2.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <font size="3">const</font></font><font size="3">鎴愬憳鍑芥暟銆傛彁鍒拌繖涓蹇甸鍏堣璋堝埌綾葷殑<font face="Times New Roman">const</font>瀵硅薄錛屾鍍忓唴緗被鍨嬭兘澶熷畾涔?font face="Times New Roman">const</font>瀵硅薄涓鏍鳳紙<font face="Times New Roman">const int r=10;</font>錛夛紝鐢ㄦ埛鑷畾涔夌被鍨嬩篃鍙互瀹氫箟<font face="Times New Roman">const</font>瀵硅薄<font face="Times New Roman">(const X px(10);)</font>錛岀紪璇戝櫒瑕佷繚璇佽繖涓璞″湪鍏剁敓鍛藉懆鏈熷唴涓嶈兘澶熻鏀瑰彉銆傚鏋滀綘瀹氫箟浜?jiǎn)杩欐狅L(fēng)殑涓涓?font face="Times New Roman">const</font>瀵硅薄錛岄偅涔?/font><span style="font-size: medium;">緙栬瘧鍣ㄤ負(fù)浜?jiǎn)淇濊瘉瀵硅薄鐨?/span><font face="Times New Roman" style="font-size: medium;">const</font><span style="font-size: medium;">鐗規(guī)э紝</span><font size="3"><span style="color: #ffff00;">瀵逛簬榪欎釜瀵硅薄鐨勪竴鍒囬潪</span><font face="Times New Roman"><span style="color: #ffff00;">const</span></font><span style="color: #ffff00;">鎴愬憳鍑芥暟鐨勮皟鐢?/span>閮戒細(xì)琚姝㈠茍鍦ㄧ紪璇戞湡闂存姤閿欙紙闄ゆ瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟錛夈傛墍浠ュ鏋滀綘鎯寵浣犵殑鎴愬憳鍑芥暟鑳藉鍦?font face="Times New Roman">const</font>瀵硅薄涓婅繘琛屾搷浣滅殑璇濓紝灝辮鎶婅繖涓嚱鏁板0鏄庝負(fù)<font face="Times New Roman">const</font>鎴愬憳鍑芥暟銆?br /></font>      <font size="3">鍋囧<font face="Times New Roman">f( )</font>鏄被涓殑鎴愬憳鍑芥暟鐨勮瘽錛屽畠鐨勫0鏄庡艦濡傦細(xì)<br /></font><font face="Times New Roman" size="3">int f( ) const; //const</font><font size="3">鏀懼湪鍑芥暟鐨勬渶鍚?br />緙栬瘧鍣ㄤ細(xì)瀵硅繖涓嚱鏁拌繘琛屾鏌ワ紝鍦ㄨ繖涓嚱鏁頒腑鐨勪換浣曡瘯鍥炬敼鍙樻垚鍛樺彉閲忓拰璋冪敤闈?font face="Times New Roman">const</font>鎴愬憳鍑芥暟鐨勬搷浣滈兘琚涓洪潪娉曘?/font><font size="3">綾葷殑鏋勯犲拰鏋愭瀯鍑芥暟閮戒笉鑳芥槸<font face="Times New Roman">const</font>鍑芥暟銆?/font></p> <p><font face="Times New Roman"><font size="3">3.</font> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></font> <font size="3">寤虹珛浜?jiǎn)涓涓?font face="Times New Roman">const</font>鎴愬憳鍑芥暟錛屼絾浠嶇劧鎯崇敤榪欎釜鍑芥暟鏀瑰彉瀵硅薄鍐呴儴鐨勬暟鎹紝榪欐牱鐨勮姹備篃浼?xì)缁忓笖R亣鍒幫紝灝ゅ叾鏄湪涓涓嫑鍒葷殑闈㈣瘯鑰冨畼閭i噷銆傞鍏堟垜浠寮勬竻妤氳冨畼鐨勮姹傦紝鍥犱負(fù)鏈変袱縐嶆柟娉曞彲浠ュ疄鐜幫紝濡傛灉榪欎綅鑰冨畼瑕佹眰涓嶆敼鍙樺師鏉ョ被鐨勪換浣曚笢瑗匡紝鍙浣犱粠褰撳墠榪欎釜<font face="Times New Roman">const</font>鎴愬憳鍑芥暟鍏ユ墜錛岄偅涔堜綘鍙湁浣跨敤鍓嶉潰鎻愬埌鐨勭被鍨嬪己鍒惰漿鎹㈡柟娉曘傚疄渚嬪涓嬶細(xì)</font><br /><font face="Times New Roman" size="3">//</font><font size="3">鍋囧鏈変竴涓彨鍋?font face="Times New Roman">X</font>鐨勭被錛屽畠鏈変竴涓?font face="Times New Roman">int</font>鎴愬憳鍙橀噺<font face="Times New Roman">r</font>錛屾垜浠渶瑕侀氳繃涓涓?font face="Times New Roman">const</font>鎴愬憳鍑芥暟<font face="Times New Roman">f( )</font>鏉ュ榪欎釜<font face="Times New Roman">r</font>榪涜<font face="Times New Roman">++r</font>鎿嶄綔錛屼唬鐮佸涓?/font><br /><font face="Times New Roman" size="3">void X::f( ) const<br />{ <wbr> (const_cast<X*>(this)) -> ++r;  <wbr>} //</font><font size="3">閫氳繃<font face="Times New Roman">this</font>鎸囬拡榪涜綾誨瀷寮哄埗杞崲瀹炵幇</font><br /><font size="3">鍙﹀涓縐嶆柟娉曞氨鏄嬌鐢ㄥ叧閿瓧錛?strong><font face="Times New Roman">mutable</font></strong><strong>銆?/strong>濡傛灉浣犵殑鎴愬憳鍙橀噺鍦ㄥ畾涔夋椂鏄繖涓牱瀛愮殑錛?/font><br /><font face="Times New Roman" size="3">mutable int r ;<br /></font><font size="3">閭d箞瀹冨氨鍛婅瘔緙栬瘧鍣ㄨ繖涓垚鍛樺彉閲忓彲浠ラ氳繃<font face="Times New Roman">const</font>鎴愬憳鍑芥暟鏀瑰彉銆傜紪璇戝櫒灝變笉浼?xì)鍐嶇悊浼?xì)瀵逛粬鐨勬鏌ヤ簡(jiǎn)銆?/font></p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:01 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65364.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title># 棰勫鐞嗛緙栬瘧錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65363.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 12:00:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65363.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65363.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65363.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65363.html</trackback:ping><description><![CDATA[<p>涓銆侀澶勭悊鐨勭敱鏉ワ細(xì)<br> <wbr> <wbr> <wbr> 鍦–++鐨勫巻鍙插彂灞曚腑錛屾湁寰堝鐨勮璦鐗瑰緛錛堢壒鍒槸璇█鐨勬櫐娑╀箣澶勶級(jí)鏉ヨ嚜浜嶤璇█錛岄澶勭悊灝辨槸鍏朵腑鐨勪竴涓侰++浠嶤璇█閭i噷鎶奀璇█棰勫鐞嗗櫒錛堣Bjarne鍗氬+綆縐頒負(fù)Cpp錛屼笉鐭ラ亾鏄笉鏄疌 Program Preprocessor鐨勭畝縐幫級(jí)緇ф壙榪囨潵銆?/p> <p><br>浜屻佸父瑙佺殑棰勫鐞嗗姛鑳斤細(xì)<br> <wbr> <wbr> <wbr> 棰勫鐞嗗櫒鐨勪富瑕佷綔鐢ㄥ氨鏄妸閫氳繃棰勫鐞嗙殑鍐呭緩鍔熻兘瀵逛竴涓祫婧愯繘琛岀瓑浠鋒浛鎹紝鏈甯歌鐨勯澶勭悊鏈夛細(xì)鏂囦歡鍖呭惈錛屾潯浠剁紪璇戙佸竷灞鎺у埗鍜屽畯鏇挎崲4縐嶃?/p> <p> <wbr> <wbr> <wbr> 鏂囦歡鍖呭惈錛?/p> <p>#include 鏄竴縐嶆渶涓哄父瑙佺殑棰勫鐞嗭紝涓昏鏄仛涓烘枃浠剁殑寮曠敤緇勫悎婧愮▼搴忔鏂囥?br> <wbr> <wbr> <wbr> 鏉′歡緙栬瘧錛?/p> <p>#if錛?ifndef錛?ifdef錛?endif錛?undef絳変篃鏄瘮杈冨父瑙佺殑棰勫鐞嗭紝涓昏鏄繘琛岀紪璇戞椂榪涜鏈夐夋嫨鐨勬寫閫夛紝娉ㄩ噴鎺変竴浜涙寚瀹氱殑浠g爜錛屼互杈懼埌鐗堟湰鎺у埗銆侀槻姝㈠鏂囦歡閲嶅鍖呭惈鐨勫姛鑳姐?/p> <p> <wbr> <wbr> <wbr> 甯冨眬鎺у埗錛?/p> <p>#progma錛岃繖涔熸槸鎴戜滑搴旂敤棰勫鐞嗙殑涓涓噸瑕佹柟闈紝涓昏鍔熻兘鏄負(fù)緙栬瘧紼嬪簭鎻愪緵闈炲父瑙勭殑鎺у埗嫻佷俊鎭?br> <wbr> <wbr> <wbr> 瀹忔浛鎹細(xì)</p> <p>#define錛岃繖鏄渶甯歌鐨勭敤娉曪紝瀹冨彲浠ュ畾涔夌鍙峰父閲忋佸嚱鏁板姛鑳姐侀噸鏂板懡鍚嶃佸瓧絎︿覆鐨勬嫾鎺ョ瓑鍚勭鍔熻兘銆?/p> <p><br>涓夈侀澶勭悊鎸囦護(hù)錛?br> <wbr> <wbr> <wbr> 棰勫鐞嗘寚浠ょ殑鏍煎紡濡備笅錛?br>#directive tokens<br>#絎﹀彿搴旇鏄繖涓琛岀殑絎竴涓潪絀哄瓧絎︼紝涓鑸垜浠妸瀹冩斁鍦ㄨ搗濮嬩綅緗傚鏋滄寚浠や竴琛屾斁涓嶄笅錛屽彲浠ラ氳繃榪涜鎺у埗錛屼緥濡傦細(xì)<br>#define Error if(error) exit(1)</p> <p>絳変環(huán)浜?br>#define Error<br>if(error) exit(1)<br>涓嶈繃鎴戜滑涓轟簡(jiǎn)緹庡寲璧瘋錛屼竴鑸兘涓嶆庝箞榪欎箞鐢紝鏇村父瑙佺殑鏂瑰紡濡備笅錛?br># ifdef __BORLANDC__<br>if_true<(is_convertible<Value,named_template_param_base>::value)>::<br>template then<make_named_arg, make_key_value>::type Make;<br># else<br>enum { is_named = is_named_parameter<Value>::value };<br>typedef typename if_true<(is_named)>::template<br>then<make_named_arg, make_key_value>::type Make;<br># endif<br>涓嬮潰鎴戜滑鐪嬩竴涓嬪父瑙佺殑棰勫鐞嗘寚浠わ細(xì)<br>#define 瀹忓畾涔?br>#undef 鏈畾涔夊畯<br>#include 鏂囨湰鍖呭惈<br>#ifdef 濡傛灉瀹忚瀹氫箟灝辮繘琛岀紪璇?br>#ifndef 濡傛灉瀹忔湭琚畾涔夊氨榪涜緙栬瘧<br>#endif 緇撴潫緙栬瘧鍧楃殑鎺у埗<br>#if 琛ㄨ揪寮忛潪闆跺氨瀵逛唬鐮佽繘琛岀紪璇?br>#else 浣滀負(fù)鍏朵粬棰勫鐞嗙殑鍓╀綑閫夐」榪涜緙栬瘧<br>#elif 榪欐槸涓縐?else鍜?if鐨勭粍鍚堥夐」<br>#line 鏀瑰彉褰撳墠鐨勮鏁板拰鏂囦歡鍚嶇О<br>#error 杈撳嚭涓涓敊璇俊鎭?br>#pragma 涓虹紪璇戠▼搴忔彁渚涢潪甯歌鐨勬帶鍒舵祦淇℃伅<br> <wbr> <wbr> <wbr> 涓嬮潰鎴戜滑瀵硅繖浜涢澶勭悊榪涜涓涓鐨勮鏄庯紝鑰冭檻鍒板畯鐨勯噸瑕佹у拰綣佺悙鎬э紝鎴戜滑鎶婂畠鏀懼埌鏈鍚庤銆?br><br>鍥涖佹枃浠跺寘鍚寚浠わ細(xì) #include<br>榪欑棰勫鐞嗕嬌鐢ㄦ柟寮忔槸鏈涓哄父瑙佺殑錛屽鉤鏃舵垜浠紪鍐欑▼搴忛兘浼?xì)鐢ㄥ垘图屾渶甯歌鐨勭敤娉曟槸錛?br>#include <iostream> //鏍囧噯搴撳ご鏂囦歡<br>#include <iostream.h> //鏃у紡鐨勬爣鍑嗗簱澶存枃浠?br>#include "IO.h" //鐢ㄦ埛鑷畾涔夌殑澶存枃浠?br>#include "../file.h" //UNIX涓嬬殑鐖剁洰褰曚笅鐨勫ご鏂囦歡<br>#include "/usr/local/file.h" //UNIX涓嬬殑瀹屾暣璺緞<br>#include "..file.h" //Dos涓嬬殑鐖剁洰褰曚笅鐨勫ご鏂囦歡<br>#include "usrlocalfile.h" //Dos涓嬬殑瀹屾暣璺緞<br>榪欓噷闈㈡湁2涓湴鏂硅娉ㄦ剰錛?br>1銆佹垜浠敤<iostream>榪樻槸<iostream.h>?<br>鎴戜滑涓誨紶浣跨敤<iostream>錛岃屼笉鏄?lt;iostream.h>,涓轟粈涔堝憿錛熸垜鎯充綘鍙兘榪樿寰楁垜鏇劇粡緇欏嚭榪囧嚑鐐圭悊鐢憋紝榪欓噷鎴戝ぇ鑷寸殑璇翠竴涓嬶細(xì)棣栧厛錛?h鏍煎紡鐨勫ご鏂囦歡鏃╁湪98騫?鏈堜喚灝辮鏍囧噯濮斿憳浼?xì)鎶涘純浜?jiǎn)錛屾垜浠簲璇ョ揣璺熸爣鍑嗭紝浠ラ傚悎鏃朵唬鐨勫彂灞曘傚叾嬈★紝iostream.h鍙敮鎸佺獎(jiǎng)瀛楃闆嗭紝iostream鍒欐敮鎸佺獎(jiǎng)/瀹藉瓧絎﹂泦銆傝繕鏈夛紝鏍囧噯瀵筰ostream浣滀簡(jiǎn)寰堝鐨勬敼鍔紝鎺ュ彛鍜屽疄鐜伴兘鏈変簡(jiǎn)鍙樺寲銆傛渶鍚庯紝iostream緇勪歡鍏ㄩ儴鏀懼叆namespace std涓紝闃叉浜?jiǎn)鍚嶅瓧姹℃煋銆?br>2銆?lt;io.h>鍜?io.h"鐨勫尯鍒紵<br>鍏跺疄浠栦滑鍞竴鐨勫尯鍒氨鏄悳绱㈣礬寰勪笉鍚岋細(xì)<br>瀵逛簬#include <io.h> 錛岀紪璇戝櫒浠庢爣鍑嗗簱璺緞寮濮嬫悳绱?br>瀵逛簬#include "io.h" 錛岀紪璇戝櫒浠庣敤鎴風(fēng)殑宸ヤ綔璺緞寮濮嬫悳绱?br><br>浜斻佺紪璇戞帶鍒舵寚浠わ細(xì)<br>榪欎簺鎸囦護(hù)鐨勪富瑕佺洰鐨勬槸榪涜緙栬瘧鏃惰繘琛屾湁閫夋嫨鐨勬寫閫夛紝娉ㄩ噴鎺変竴浜涙寚瀹氱殑浠g爜錛屼互杈懼埌鐗堟湰鎺у埗銆侀槻姝㈠鏂囦歡閲嶅鍖呭惈鐨勫姛鑳姐備嬌鐢ㄦ牸寮忥紝濡備笅錛?br>1銆佸鏋渋dentifier涓轟竴涓畾涔変簡(jiǎn)鐨勭鍙鳳紝your code灝變細(xì)琚紪璇戯紝鍚﹀垯鍓旈櫎<br>#ifdef identifier<br>your code<br>#endif<br>2銆佸鏋渋dentifier涓轟竴涓湭瀹氫箟鐨勭鍙鳳紝your code灝變細(xì)琚紪璇戯紝鍚﹀垯鍓旈櫎<br>#ifndef identifier<br>your code<br>#endif<br>3銆佸鏋渆xpression闈為浂錛寉our code灝變細(xì)琚紪璇戯紝鍚﹀垯鍓旈櫎<br>#if expression<br>your code<br>#endif<br>4銆佸鏋渋dentifier涓轟竴涓畾涔変簡(jiǎn)鐨勭鍙鳳紝your code1灝變細(xì)琚紪璇戯紝鍚﹀垯your code2灝變細(xì)琚紪璇?br>#ifdef identifier<br>your code1<br>#else<br>your code2<br>#endif<br>5銆佸鏋渆pression1闈為浂錛屽氨緙栬瘧your code1錛屽惁鍒欙紝濡傛灉expression2闈為浂錛屽氨緙栬瘧your code2錛屽惁鍒欙紝灝辯紪璇憏our code3<br>#if expressin1<br>your code1<br>#elif expression2 //鍛靛懙錛宔lif<br>your code2<br>#else<br>your code3<br>#enif<br><br>鍏佸叾浠栭緙栬瘧鎸囦護(hù)<br> <wbr> <wbr> <wbr> 闄や簡(jiǎn)涓婇潰鎴戜滑璇寸殑闆嗕腑甯哥敤鐨勭紪璇戞寚浠わ紝榪樻湁3縐嶄笉澶父瑙佺殑緙栬瘧鎸囦護(hù)錛?line銆?error銆?pragma錛屾垜浠帴涓嬫潵灝辯畝鍗曠殑璋堜竴涓嬨?br>1銆?line鐨勮娉曞涓嬶細(xì)<br>#line number filename<br>渚嬪錛?line 30 a.h 鍏朵腑錛屾枃浠跺悕a.h鍙互鐪佺暐涓嶅啓銆?/p> <p>榪欐潯鎸囦護(hù)鍙互鏀瑰彉褰撳墠鐨勮鍙峰拰鏂囦歡鍚嶏紝渚嬪涓婇潰鐨勮繖鏉¢澶勭悊鎸囦護(hù)灝卞彲浠ユ敼鍙樺綋鍓嶇殑琛屽彿涓?0錛屾枃浠跺悕鏄痑.h銆傚垵鐪嬭搗鏉ヤ技涔庢病鏈変粈涔堢敤錛屼笉榪囷紝浠栬繕鏄湁鐐圭敤鐨勶紝閭e氨鏄敤鍦ㄧ紪璇戝櫒鐨勭紪鍐欎腑錛屾垜浠煡閬撶紪璇戝櫒瀵笴++婧愮爜緙栬瘧榪囩▼涓細(xì)浜х敓涓浜涗腑闂存枃浠訛紝閫氳繃榪欐潯鎸囦護(hù)錛屽彲浠ヤ繚璇佹枃浠跺悕鏄浐瀹氱殑錛屼笉浼?xì)琚珮q欎簺涓棿鏂囦歡浠f浛錛屾湁鍒╀簬榪涜鍒嗘瀽銆?br>2銆?error璇硶濡備笅錛?br>#error info<br>渚嬪錛?/p> <p>#ifndef UNIX<br>#error This software requires the UNIX OS.<br>#endif<br>榪欐潯鎸囦護(hù)涓昏鏄粰鍑洪敊璇俊鎭紝涓婇潰鐨勮繖涓緥瀛愬氨鏄紝濡傛灉娌℃湁鍦║NIX鐜涓嬶紝灝變細(xì)杈撳嚭This software requires the UNIX OS.鐒跺悗璇卞彂緙栬瘧鍣ㄧ粓姝€傛墍浠ユ葷殑鏉ヨ錛岃繖鏉℃寚浠ょ殑鐩殑灝辨槸鍦ㄧ▼搴忓穿婧冧箣鍓嶈兘澶熺粰鍑轟竴瀹氱殑淇℃伅銆?br>3銆?pragma</p> <p>瀹冩槸闈炵粺涓鐨勶紝浠栬渚濋潬鍚勪釜緙栬瘧鍣ㄧ敓浜ц咃紝渚嬪錛屽湪SUN C++緙栬瘧鍣ㄤ腑錛?br>// 鎶妌ame鍜寁al鐨勮搗濮嬪湴鍧璋冩暣涓?涓瓧鑺傜殑鍊嶆暟<br>#progma align 8 (name, val)<br>char name[9];<br>double val;</p> <p>鎴栨槸濡備笅鐢ㄦ硶錛?br>//鍦ㄧ▼搴忔墽琛屽紑濮嬶紝璋冪敤鍑芥暟MyFunction<br>#progma init (MyFunction)</p> <p><br>涓冦侀瀹氫箟鏍囪瘑絎?br>涓轟簡(jiǎn)澶勭悊涓浜涙湁鐢ㄧ殑淇℃伅錛岄澶勭悊瀹氫箟浜?jiǎn)涓浜涢澶勭悊鏍囪瘑絎︼紝铏界劧鍚勭緙栬瘧鍣ㄧ殑棰勫鐞嗘爣璇嗙涓嶅敖鐩稿悓錛屼絾鏄粬浠兘浼?xì)澶勭悊涓嬮潰鐨?縐嶏細(xì)<br>__FILE__ 姝e湪緙栬瘧鐨勬枃浠剁殑鍚嶅瓧<br>__LINE__ 姝e湪緙栬瘧鐨勬枃浠剁殑琛屽彿<br>__DATE__ 緙栬瘧鏃跺埢鐨勬棩鏈熷瓧絎︿覆錛屼緥濡傦細(xì) "25 Dec 2000"<br>__TIME__ 緙栬瘧鏃跺埢鐨勬椂闂村瓧絎︿覆錛屼緥濡傦細(xì) "12:30:55"<br>渚嬪錛歝out<<"The file is :"<<__FILE__"<<"! The lines is:"<<__LINE__<<endl;</p> <p><br>鍏侀澶勭悊浣曞幓浣曚粠<br> <wbr> <wbr> <wbr> 濡備綍鍙栦唬#include棰勫鐞嗘寚浠わ紝鎴戜滑鍦ㄨ繖閲屽氨涓嶅啀涓涓璁ㄨ浜?jiǎn)銆侰++騫舵病鏈変負(fù)#include鎻愪緵鏇夸唬褰㈠紡錛屼絾鏄痭amespace鎻愪緵浜?jiǎn)涓縐嶄綔鐢ㄥ煙鏈哄埗錛屽畠鑳戒互鏌愮鏂瑰紡鏀寔緇勫悎錛屽埄鐢ㄥ畠鍙互鏀瑰杽#include鐨勮涓烘柟寮忥紝浣嗘槸鎴戜滑榪樻槸鏃犳硶鍙栦唬#include銆?br> <wbr> <wbr> <wbr> #progma搴旇綆楁槸涓涓彲鏈夊彲鏃犵殑棰勫鐞嗘寚浠わ紝鎸夌収C++涔嬬埗Bjarne鐨勮瘽璇達(dá)紝灝辨槸錛?#progma琚繃鍒嗙殑緇忓父鐨勭敤浜庡皢璇█璇箟鐨勫彉褰㈤殣钘忓埌緙栬瘧緋葷粺閲岋紝鎴栬呰鐢ㄤ簬鎻愪緵甯︽湁鐗規(guī)畩璇箟鍜岀鎷欒娉曠殑璇█鎵╁厖銆?#8221;<br> <wbr> <wbr> <wbr> 瀵逛簬#ifdef錛屾垜浠粛鐒舵潫鎵嬫棤絳栵紝灝辯畻鏄垜浠埄鐢╥f璇彞鍜屽父閲忚〃杈懼紡錛屼粛鐒朵笉瓚充互鏇夸唬濂癸紝鍥犱負(fù)涓涓猧f璇彞鐨勬鏂囧繀欏誨湪璇硶涓婃紜紝婊¤凍綾繪鏌ワ紝鍗充嬌浠栧鍦ㄤ竴涓粷涓嶄細(xì)琚墽琛岀殑鍒嗘敮閲岄潰銆?/p> <img src ="http://m.shnenglu.com/zmllegtui/aggbug/65363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 20:00 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65363.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>explicit 鍜岀被鐨勮漿鎹紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65362.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 11:59:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65362.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65362.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65362.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65362.html</trackback:ping><description><![CDATA[<p>// explicit鍏抽敭瀛?/p> <p>    c++涓殑explicit鍏抽敭瀛楃敤鏉ヤ慨楗扮被鐨勬瀯閫犲嚱鏁幫紝琛ㄦ槑璇ユ瀯閫犲嚱鏁版槸鏄懼紡鐨勶紝鍗蟲嫆緇濇瀯閫犳椂鐨勯殣寮忚漿鎹€傚鏋渃++綾葷殑鏋勯犲嚱鏁版湁涓涓弬鏁幫紝閭d箞鍦ㄧ紪璇戠殑鏃跺欏氨浼?xì)鏈変竴涓己鐪佺殑杞崲鎿嶄綔錛氬皢璇ユ瀯閫犲嚱鏁板搴旀暟鎹被鍨嬬殑鏁版嵁杞崲涓鴻綾誨璞★紝濡備笅闈㈡墍紺猴細(xì)</p> <p>class MyClass<br />{<br />public:<br />    MyClass( int num );<br />}<br />....<br />MyClass obj = 10; //ok,convert int to MyClass<br />    鍦ㄤ笂闈㈢殑浠g爜涓紪璇戝櫒鑷姩灝嗘暣鍨嬭漿鎹負(fù)MyClass綾誨璞★紝瀹為檯涓婄瓑鍚屼簬涓嬮潰鐨勬搷浣滐細(xì)<br />MyClass temp(10);<br />MyClass obj = temp;   <br />    涓婇潰鐨勬墍鏈夌殑鎿嶄綔鍗蟲槸鎵璋撶殑"闅愬紡杞崲"銆?/p> <p>    濡傛灉瑕侀伩鍏嶈繖縐嶈嚜鍔ㄨ漿鎹㈢殑鍔熻兘錛屽彲浠ュ皢綾葷殑鏋勯犲嚱鏁板0鏄庝負(fù)"鏄劇ず"錛屼篃灝辨槸鍦ㄥ0鏄庢瀯閫犲嚱鏁扮殑鏃跺欏墠闈㈡坊鍔犱笂explicit鍗沖彲錛岃繖鏍峰氨鍙互闃叉榪欑鑷姩鐨勮漿鎹㈡搷浣滐紝濡傛灉鎴戜滑淇敼涓婇潰鐨凪yClass綾葷殑鏋勯犲嚱鏁頒負(fù)鏄劇ず鐨勶紝閭d箞涓嬮潰鐨勪唬鐮佸氨涓嶈兘澶熺紪璇戦氳繃浜?jiǎn)锛屽涓嬫墍紺猴細(xì)<br />class MyClass<br />{<br />public:<br />    explicit MyClass( int num );<br />}<br />....<br />MyClass obj = 10; //err,can't non-explict convert<br /> <br />// 闅愬紡綾葷被鍨嬭漿鎹?br /> <br />    榪欑鏁堟灉涓鑸兘鏄氳繃綾繪瀯閫犲嚱鏁板疄鐜扮殑銆傞偅浜涘彲浠ョ敤鍗曚釜瀹炲弬鏉ヨ皟鐢ㄧ殑鏋勯犲嚱鏁幫紝瀹氫箟浜?jiǎn)浠庡舰鍙偩c誨瀷鍒拌綾葷被鍨嬬殑涓涓殣寮忚漿鎹€備緥濡傚涓嬫儏鍐碉細(xì)<br />xxx(valueOfType1);//瀵逛簬鎺ュ彈ClassType綾誨瀷鍙傛暟鐨勫嚱鏁皒xx錛屽弬鏁頒紶閫掍腑鎵ц浜?jiǎn)闅愬紡铦{鎹€?br />xxx(ClassType(valueOfType1));//涓庝笂闈竴鍙ユ晥鏋滅浉鍚岋紝鍙槸鏄劇ず鐨勪嬌鐢ㄤ簡(jiǎn)瀵瑰簲鐨勬瀯閫犲嚱鏁般?br />    鍙﹀闇瑕佹敞鎰忎笂闈袱涓鍙ヤ腑浼犻掔殑綾葷被鍨嬪弬鏁扮殑鐢熷懡鍛ㄦ湡浠呴檺鍒跺湪xxx鍑芥暟涓?br />    濡傛灉闇瑕佹姂鍒惰繖縐嶇敱鏋勯犲嚱鏁板畾涔夌殑闅愬紡杞崲錛屽彲浠ュ涓婇潰鎵璇村皢鏋勯犲嚱鏁板0鏄庝負(fù)explicit錛堜笖浠呯敤浜庡0鏄庯級(jí)銆?br /> <br />// 浠庣被綾誨瀷鐨勮漿鎹?br />    涓庨殣寮忕被綾誨瀷杞崲涓嶅悓錛屽墠鑰呮槸鍒扮被綾誨瀷鐨勮漿鎹紝鑰岀幇鍦ㄦ槸鍒╃敤<strong style="color: #ffff00;">杞崲鎿嶄綔絎?/strong>錛屼嬌緇欏畾綾葷被鍨嬬殑瀵硅薄杞崲鎴愪負(fù)鍏朵粬綾誨瀷瀵硅薄銆傝繖縐嶈漿鎹負(fù)浠涔堟湁鐢ㄥ憿錛熻繖縐嶆柟娉曚負(fù)浜?jiǎn)鋴删c繪敮鎸佹販鍚堢被鍨嬭〃杈懼紡錛屼笖鍙互鍑忓皯綾婚渶瑕佺殑鏀寔鍔熻兘鐨勬搷浣滅鏁扮洰銆傚畾涔夋柟娉曪細(xì)閫氱敤褰㈠紡涓?operator type();<br />class A<br />{<br />public:<br />    A()<br />    {<br />        ……<br />    }<br />    operator B() const<br />    {<br />        return AtoB(A());<br />    }<br />    ……<br />};<br />    杞崲鍑芥暟涓鑸笉搴旇鏀瑰彉琚漿鎹㈢殑瀵硅薄錛屽洜姝よ漿鎹㈡搷浣滅閫氬父搴旇瀹氫箟涓篶onst銆?br /> <br />// Reference<br />    璇︽儏璇瘋銆奀++ Primer銆?th Edi涓殑5.12銆?2.4銆?4.9錛岃繕鏈塯oogle璧勬簮銆?/p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 19:59 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65362.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍐呭瓨絀洪棿鍒嗛厤錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65331.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 07:05:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65331.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65331.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65331.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65331.html</trackback:ping><description><![CDATA[     鎽樿: 鍦–++涓紝鍐呭瓨鍒嗘垚5涓尯錛屼粬浠垎鍒槸鍫嗐佹爤銆佽嚜鐢卞瓨鍌ㄥ尯銆佸叏灞/闈?rùn)鎬佸瓨鍌ㄥ尯鍜屽父閲忓瓨鍌ㄥ尯銆?<br>鏍堬紝灝辨槸閭d簺鐢辯紪璇戝櫒鍦ㄩ渶瑕佺殑鏃跺欏垎閰嶏紝鍦ㄤ笉闇瑕佺殑鏃跺欒嚜鍔ㄦ竻妤氱殑鍙橀噺鐨勫瓨鍌ㄥ尯銆傞噷闈㈢殑鍙橀噺閫氬父鏄眬閮ㄥ彉閲忋佸嚱鏁板弬鏁扮瓑銆? <br>鍫嗭紝灝辨槸閭d簺鐢眓ew鍒嗛厤鐨勫唴瀛樺潡錛屼粬浠殑閲婃斁緙栬瘧鍣ㄤ笉鍘葷錛岀敱鎴戜滑鐨勫簲鐢ㄧ▼搴忓幓鎺у埗錛屼竴鑸竴涓猲ew灝辮瀵瑰簲涓涓猟elete銆傚鏋滅▼搴忓憳娌℃湁閲婃斁鎺夛紝閭d箞鍦ㄧ▼搴忕粨鏉熷悗錛屾搷浣滅郴緇熶細(xì)鑷姩鍥炴敹銆?<br>鈥︹?<br> <br> <br>  <a href='http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65331.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 15:05 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65331.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>铏氭瀽鏋勫嚱鏁幫紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65328.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 06:46:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65328.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65328.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65328.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65328.html</trackback:ping><description><![CDATA[     鎽樿: 鎴戜滑鐭ラ亾錛岀敤C++寮鍙戠殑鏃跺欙紝鐢ㄦ潵鍋氬熀綾葷殑綾葷殑鏋愭瀯鍑芥暟涓鑸兘鏄櫄鍑芥暟銆傚彲鏄紝涓轟粈涔堣榪欐牱鍋氬憿錛熶笅闈㈢敤涓涓皬渚嬪瓙鏉ヨ鏄庯細(xì) <br>鏈変笅闈㈢殑涓や釜綾伙細(xì) <br>class ClxBase <br>{ <br>public: <br>鈥︹?<br> <br>  <a href='http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65328.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 14:46 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65328.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>auto_ptr錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65323.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 06:29:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65323.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65323.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65323.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65323.html</trackback:ping><description><![CDATA[     鎽樿: 寰堝浜哄惉璇磋繃鏍囧噯auto_ptr鏅鴻兘鎸囬拡鏈哄埗錛屼絾騫朵笉鏄瘡涓漢閮藉ぉ澶╀嬌鐢ㄥ畠銆傝繖鐪熸槸涓仐鎲撅紝鍥犱負(fù)auto_ptr浼橀泤鍦拌В鍐充簡(jiǎn)C++璁捐鍜岀紪鐮佷腑甯歌鐨勯棶棰橈紝姝g‘鍦頒嬌鐢ㄥ畠鍙互鐢熸垚鍋ュ.鐨勪唬鐮併傛湰鏂囬槓榪頒簡(jiǎn)濡備綍姝g‘榪愮敤auto_ptr鏉ヨ浣犵殑浠g爜鏇村姞瀹夊叏鈥斺斾互鍙?qiáng)濡備綍閬垮厤瀵筧uto_ptr鍗遍櫓浣嗗父瑙佺殑璇敤錛岃繖浜涜鐢ㄤ細(xì)寮曞彂闂存柇鎬у彂浣溿侀毦浠ヨ瘖鏂殑bug銆?<br>鈥︹?<br> <br>  <a href='http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65323.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 14:29 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65323.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Templete錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65316.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Tue, 28 Oct 2008 05:46:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65316.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65316.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65316.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65316.html</trackback:ping><description><![CDATA[     鎽樿: 涓銆佷粈涔堟槸妯℃澘 <br> 妯℃澘鏄牴鎹弬鏁扮被鍨嬬敓鎴愬嚱鏁板拰綾葷殑鏈哄埗錛堟湁鏃剁О涓衡滃弬鏁板喅瀹氱被鍨嬧濓級(jí)銆傞氳繃浣跨敤妯℃澘錛屽彲浠ュ彧璁捐涓涓被鏉ュ鐞嗗縐嶇被鍨嬬殑鏁版嵁錛岃屼笉蹇呬負(fù)姣忎竴縐嶇被鍨嬪垎鍒垱寤虹被銆?<br> 渚嬪錛屽垱寤轟竴涓被鍨嬪畨鍏ㄥ嚱鏁版潵榪斿洖涓や釜鍙傛暟涓緝?yōu)畯鐨勪竴涓紝濡傛灉涓嶄嬌鐢═emplates錛屽繀欏昏緙栧啓涓緋誨垪濡備笅鐨勫嚱鏁幫細(xì) <br>鈥︹?<br> <br>  <a href='http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65316.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-28 13:46 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/28/65316.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>STL std::string鐨勫唴瀛樺叡浜拰Copy-On-Write鎶鏈紙C++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65255.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Mon, 27 Oct 2008 14:56:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65255.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65255.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65255.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65255.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65255.html</trackback:ping><description><![CDATA[<span>1</span><span>銆佹蹇?/span><span><br /></span>      <span>Scott Meyers</span><span>鍦ㄣ?/span><span>More Effective C++</span><span>銆嬩腑涓句簡(jiǎn)涓緥瀛愶紝涓嶇煡浣犳槸鍚﹁繕璁板緱錛熷湪浣犺繕鍦ㄤ笂瀛︾殑鏃跺欙紝浣犵殑鐖舵瘝瑕佷綘涓嶈鐪嬬數(shù)瑙嗭紝鑰屽幓澶嶄範(fàn)鍔熻錛屼簬鏄綘鎶婅嚜宸卞叧鍦ㄦ埧闂撮噷錛屽仛鍑轟竴鍓鍦ㄥ涔?fàn)鍔熻瘎勬牱瀛愬Q屽叾瀹炰綘鍦ㄥ共鐫鍒殑璇稿緇欑彮涓婄殑鏌愪綅濂崇敓鍐欐儏涔︿箣綾葷殑浜嬶紝鑰屼竴鏃︿綘鐨勭埗姣嶅嚭鏉ュ湪浣犳埧闂磋媯(gè)鏌ヤ綘鏄惁鍦ㄥ涔?fàn)鏃跺Q屼綘鎵嶇湡姝f崱璧瘋鏈湅涔︺傝繖灝辨槸</span><span>“</span><span>鎷栧歡鎴樻湳</span><span>”</span><span>錛岀洿鍒頒綘闈炶鍋氱殑鏃跺欐墠鍘誨仛銆?/span><span><br /></span>      <span>褰撶劧錛岃繖縐嶄簨鎯呭湪鐜板疄鐢熸椿涓椂寰寰浼?xì)鍑轰簨锛屼絾鍏跺湪缂柦E嬩笘鐣屼腑鎽囪韓涓鍙橈紝灝辨垚涓轟簡(jiǎn)鏈鏈夌敤鐨勬妧鏈紝姝e</span><span>C++</span><span>涓殑鍙互闅忓澹版槑鍙橀噺鐨勭壒鐐逛竴鏍鳳紝</span><span>Scott Meyers</span><span>鎺ㄨ崘鎴戜滑錛屽湪鐪熸闇瑕佷竴涓瓨鍌ㄧ┖闂存椂鎵嶅幓澹版槑鍙橀噺錛堝垎閰嶅唴瀛橈級(jí)錛岃繖鏍蜂細(xì)寰楀埌紼嬪簭鍦ㄨ繍琛屾椂鏈灝忕殑鍐呭瓨鑺遍攢銆傛墽琛屽埌閭f墠浼?xì)鍘诲仛鍒嗛厤鍐呭瓨杩櫩U嶆瘮杈冭楁椂鐨勫伐浣滐紝榪欎細(xì)緇欐垜浠殑紼嬪簭鍦ㄨ繍琛屾椂鏈夋瘮杈冨ソ鐨勬ц兘銆傚繀绔燂紝</span><span>20%</span><span>鐨勭▼搴忚繍琛屼簡(jiǎn)</span><span>80%</span><span>鐨勬椂闂淬?/span><span> <span><br /></span></span>      <span>褰撶劧錛屾嫋寤舵垬鏈繕騫朵笉鍙槸榪欐牱涓縐嶇被鍨嬶紝榪欑鎶鏈鎴戜滑騫挎硾鍦板簲鐢ㄧ潃錛岀壒鍒槸鍦ㄦ搷浣滅郴緇熷綋涓紝褰撲竴涓▼搴忚繍琛岀粨鏉熸椂錛屾搷浣滅郴緇熷茍涓嶄細(xì)鎬ョ潃鎶婂叾娓呴櫎鍑哄唴瀛橈紝鍘熷洜鏄湁鍙兘紼嬪簭榪樹細(xì)椹笂鍐嶈繍琛屼竴嬈★紙浠庣鐩樻妸紼嬪簭瑁呭叆鍒板唴瀛樻槸涓緢鎱㈢殑榪囩▼錛夛紝鑰屽彧鏈夊綋鍐呭瓨涓嶅鐢ㄤ簡(jiǎn)錛屾墠浼?xì)鎶姌q欎簺榪橀┗鐣欏唴瀛樼殑紼嬪簭娓呭嚭銆?/span><span><br /></span>      <span>鍐欐椂鎵嶆嫹璐濓紙</span><span>Copy-On-Write</span><span>錛夋妧鏈紝灝辨槸緙栫▼鐣?/span><span>“</span><span>鎳掓儼琛屼負(fù)</span><span>”——</span><span>鎷栧歡鎴樻湳鐨勪駭鐗┿備婦涓緥瀛愶紝姣斿鎴戜滑鏈変釜紼嬪簭瑕佸啓鏂囦歡錛屼笉鏂湴鏍規(guī)嵁緗戠粶浼犳潵鐨勬暟鎹啓錛屽鏋滄瘡涓嬈?/span><span>fwrite</span><span>鎴栨槸</span><span>fprintf</span><span>閮借榪涜涓涓鐩樼殑</span><span>I/O</span><span>鎿嶄綔鐨勮瘽錛岄兘綆鐩村氨鏄ц兘涓婂法澶х殑鎹熷け錛屽洜姝ら氬父鐨勫仛娉曟槸錛屾瘡嬈″啓鏂囦歡鎿嶄綔閮藉啓鍦ㄧ壒瀹氬ぇ灝忕殑涓鍧楀唴瀛樹腑錛堢鐩樼紦瀛橈級(jí)錛屽彧鏈夊綋鎴戜滑鍏抽棴鏂囦歡鏃訛紝鎵嶅啓鍒扮鐩樹笂錛堣繖灝辨槸涓轟粈涔堝鏋滄枃浠朵笉鍏抽棴錛屾墍鍐欑殑涓滆タ浼?xì)涓㈠まq殑鍘熷洜錛夈傛洿鏈夌敋鑰呮槸鏂囦歡鍏抽棴鏃墮兘涓嶅啓紓佺洏錛岃屼竴鐩寸瓑鍒板叧鏈烘垨鏄唴瀛樹笉澶熸椂鎵嶅啓紓佺洏錛?/span><span>Unix</span><span>灝辨槸榪欐牱涓涓郴緇燂紝濡傛灉闈炴甯擱鍑猴紝閭d箞鏁版嵁灝變細(xì)涓㈠け錛屾枃浠跺氨浼?xì)鎹熷潖銆?/span><span>涓轟簡(jiǎn)鎬ц兘鎴戜滑闇瑕佸啋榪欐牱澶х殑椋庨櫓錛岃繕濂芥垜浠殑紼嬪簭鏄笉浼?xì)蹇欏緱蹇樹簡(jiǎn)杩樻湁涓鍧楁暟鎹渶瑕佸啓鍒扮鐩樹笂鐨勶紝鎵浠ヨ繖縐嶅仛娉曪紝榪樻槸寰堟湁蹇呰鐨勩?br /></span><span><br />2</span><span>銆?/span><span>鏍囧噯</span><span>C++</span><span>綾?/span><span>std::string</span><span>鐨?/span><span>Copy-On-Write<br /></span><span>      鍦ㄦ垜浠粡甯鎬嬌鐢ㄧ殑</span><span>STL</span><span>鏍囧噯妯℃澘搴撲腑鐨?/span><span>string</span><span>綾伙紝涔熸槸涓涓叿鏈夊啓鏃舵墠鎷瘋礉鎶鏈殑綾匯?/span><span>C++</span><span>鏇懼湪鎬ц兘闂涓婅騫挎硾鍦拌川鐤戝拰鎸囪矗榪囷紝涓轟簡(jiǎn)鎻愰珮鎬ц兘錛?/span><span>STL</span><span>涓殑璁稿綾婚兘閲囩敤浜?/span><span>Copy-On-Write</span><span>鎶鏈傝繖縐嶅伔鎳掔殑琛屼負(fù)鐨勭‘浣夸嬌鐢?/span><span>STL</span><span>鐨勭▼搴忔湁鐫姣旇緝楂樿鎬ц兘銆?/span><span><br /></span><span>榪欓噷錛屾垜鎯充粠</span><span>C++</span><span>綾繪垨鏄璁℃ā寮忕殑瑙掑害涓哄悇浣嶆彮寮</span><span>Copy-On-Write</span><span>鎶鏈湪</span><span>string</span><span>涓疄鐜扮殑闈㈢罕錛屼互渚涘悇浣嶅湪鐢?/span><span>C++</span><span>榪涜綾誨簱璁捐鏃跺仛涓鐐瑰弬鑰冦?/span><span><br /></span><span>鍦ㄨ榪拌繖欏規(guī)妧鏈箣鍓嶏紝鎴戞兂綆鍗曞湴璇存槑涓涓?/span><span>string</span><span>綾誨唴瀛樺垎閰嶇殑姒傚康銆傞氳繃甯革紝</span><span>string</span><span>綾諱腑蹇呮湁涓涓鏈夋垚鍛橈紝鍏舵槸涓涓?/span><span>char*</span><span>錛岀敤鎴瘋褰曚粠鍫嗕笂鍒嗛厤鍐呭瓨鐨勫湴鍧錛屽叾鍦ㄦ瀯閫犳椂鍒嗛厤鍐呭瓨錛屽湪鏋愭瀯鏃墮噴鏀懼唴瀛樸傚洜涓烘槸浠庡爢涓婂垎閰嶅唴瀛橈紝鎵浠?/span><span>string</span><span>綾誨湪緇存姢榪欏潡鍐呭瓨涓婃槸鏍煎灝忓績(jī)鐨勶紝</span><span>string</span><span>綾誨湪榪斿洖榪欏潡鍐呭瓨鍦板潃鏃訛紝鍙繑鍥?/span><span>const char*</span><span>錛屼篃灝辨槸鍙鐨勶紝濡傛灉浣犺鍐欙紝浣犲彧鑳介氳繃</span><span>string</span><span>鎻愪緵鐨勬柟娉曡繘琛屾暟鎹殑鏀瑰啓銆?br /></span><span><br />2.1</span><span>銆?/span><span>鐗規(guī)?/span><span><br /></span><span>      鐢辮〃鍙?qiáng)閲屽Q岀敱鎰熸у埌鐞嗘э紝鎴戜滑鍏堟潵鐪嬩竴鐪?/span><span>string</span><span>綾葷殑</span><span>Copy-On-Write</span><span>鐨勮〃闈㈢壒寰併傝鎴戜滑鍐欎笅涓嬮潰鐨勪竴孌電▼搴忥細(xì)</span><span><br />#include<br />#include <br />using namespace std;<br />main()<br />{<br />     string str1 = "hello world";<br />     string str2 = str1; <br />     printf ("Sharing the memory:\n");<br />     printf ("\tstr1's address: %x\n", str1.c_str() );<br />     printf ("\tstr2's address: %x\n", str2.c_str() );     <br />  <span>  </span>str1[1]='q';<br />     str2[1]='w'; <br />     printf ("After Copy-On-Write:\n");<br />     printf ("\tstr1's address: %x\n", str1.c_str() );<br />     printf ("\tstr2's address: %x\n", str2.c_str() ); <br />     return 0;<br />}       <br /></span><span>      榪欎釜紼嬪簭鐨勬剰鍥懼氨鏄絎簩涓?/span><span>string</span><span>閫氳繃絎竴涓?/span><span>string</span><span>鏋勯狅紝鐒跺悗鎵撳嵃鍑哄叾瀛樻斁鏁版嵁鐨勫唴瀛樺湴鍧錛岀劧鍚庡垎鍒慨鏀?/span><span>str1</span><span>鍜?/span><span>str2</span><span>鐨勫唴瀹癸紝鍐嶆煡涓涓嬪叾瀛樻斁鍐呭瓨鐨勫湴鍧銆傜▼搴忕殑杈撳嚭鏄繖鏍風(fēng)殑錛堟垜鍦?/span><span>VC6.0</span><span>鍜?/span><span>g++ 2.95</span><span>閮藉緱鍒頒簡(jiǎn)鍚屾牱鐨勭粨鏋滐級(jí)錛?/span><span><br />> g++ -o stringTest stringTest.cpp<br />> ./stringTest<br />Sharing the memory:<br />    str1's address: 343be9<br />    str2's address: 343be9<br />After Copy-On-Write:<br />    str1's address: 3407a9<br />    str2's address: 343be9       <br /></span><span>浠庣粨鏋滀腑鎴戜滑鍙互鐪嬪埌錛屽湪寮濮嬬殑涓や釜璇彞鍚庯紝</span><span>str1</span><span>鍜?/span><span>str2</span><span>瀛樻斁鏁版嵁鐨勫湴鍧鏄竴鏍風(fēng)殑錛岃屽湪淇敼鍐呭鍚庯紝</span><span>str1</span><span>鐨勫湴鍧鍙戠敓浜?jiǎn)鍙樺寲锛岃?/span><span>str2</span><span>鐨勫湴鍧榪樻槸鍘熸潵鐨勩備粠榪欎釜渚嬪瓙錛屾垜浠彲浠ョ湅鍒?/span><span>string</span><span>綾葷殑</span><span>Copy-On-Write</span><span>鎶鏈?/span><span><br /><br />2.2</span><span>銆?/span><span>娣卞叆</span><span><br /></span><span>      鍦ㄦ繁鍏ヨ繖鍓嶏紝閫氳繃涓婅堪鐨勬紨紺猴紝鎴戜滑搴旇鐭ラ亾鍦?/span><span>string</span><span>綾諱腑錛岃瀹炵幇鍐欐椂鎵嶆嫹璐濓紝闇瑕佽В鍐充袱涓棶棰橈紝涓涓槸鍐呭瓨鍏變韓錛屼竴涓槸</span><span>Copy-On-Wirte</span><span>錛岃繖涓や釜涓婚浼?xì)璁╂垜浠骇鐢熻澶氱枒闂Q岃繕鏄鎴戜滑甯︾潃榪欐牱鍑犱釜闂鏉ュ涔?fàn)鍚уQ?/span><span><br />1</span><span>銆?/span><span> Copy-On-Write</span><span>鐨勫師鐞嗘槸浠涔堬紵</span><span><br />2</span><span>銆?/span><span> string</span><span>綾誨湪浠涔堟儏鍐典笅鎵嶅叡浜唴瀛樼殑錛?/span><span><br />3</span><span>銆?/span><span> string</span><span>綾誨湪浠涔堟儏鍐典笅瑙﹀彂鍐欐椂鎵嶆嫹璐濓紙</span><span>Copy-On-Write</span><span>錛?/span><span>?<br />4</span><span>銆?/span><span> Copy-On-Write</span><span>鏃訛紝鍙戠敓浜?jiǎn)浠涔堬紵</span><span><br />5</span><span>銆?/span><span> Copy-On-Write</span><span>鐨勫叿浣撳疄鐜版槸鎬庝箞鏍風(fēng)殑錛?/span><span><br /></span><span>      鍠旓紝浣犺鍙鐪嬩竴鐪?/span><span>STL</span><span>涓?/span><span>stirng</span><span>鐨勬簮鐮佷綘灝卞彲浠ユ壘鍒扮瓟妗堜簡(jiǎn)銆傚綋鐒?dòng)灱屽綋鐒跺Q屾垜涔熸槸鍙傝冧簡(jiǎn)</span><span>string</span><span>鐨勭埗妯℃澘綾?/span><span>basic_string</span><span>鐨勬簮鐮併備絾鏄紝濡傛灉浣犳劅鍒扮湅</span><span>STL</span><span>鐨勬簮鐮佸氨濂藉儚鐪嬫満鍣ㄧ爜錛屽茍涓ラ噸鎵撳嚮浣犲</span><span>C++</span><span>鑷俊蹇?jī)锛屼箖鑷充骇鐢熶簡(jiǎn)鑷繁鏄惁鎳?/span><span>C++</span><span>鐨勭枒闂紝濡傛灉浣犳湁榪欐牱鐨勬劅瑙夛紝閭d箞榪樻槸緇х畫寰涓嬬湅鎴戠殑榪欑瘒鏂囩珷鍚с?/span><span><br />OK</span><span>錛岃鎴戜滑涓涓棶棰樹竴涓棶棰樺湴鎺㈣鍚э紝鎱㈡參鍦版墍鏈夌殑鎶鏈粏鑺傞兘浼?xì)嬲Q鍑烘按闈㈢殑銆?br /></span><span><br />2.3</span><span>銆?/span><span>Copy-On-Write</span><span>鐨勫師鐞嗘槸浠涔堬紵</span><span><br /><br /></span><span>      鏈変竴瀹氱粡楠岀殑紼嬪簭鍛樹竴瀹氱煡閬擄紝</span><span>Copy-On-Write</span><span>涓瀹氫嬌鐢ㄤ簡(jiǎn)</span><span>“</span><span>寮曠敤璁℃暟</span><span>”</span><span>錛屾槸鐨勶紝蹇呯劧鏈変竴鍙橀噺綾諱技浜?/span><span>RefCnt</span><span>銆傚綋絎竴涓被鏋勯犳椂錛?/span><span>string</span><span>鐨勬瀯閫犲嚱鏁頒細(xì)鏍規(guī)嵁浼犲叆鐨勫弬鏁頒粠鍫嗕笂鍒嗛厤鍐呭瓨錛屽綋鏈夊叾瀹冪被闇瑕佽繖鍧楀唴瀛樻椂錛岃繖涓鏁頒負(fù)鑷姩绱姞錛屽綋鏈夌被鏋愭瀯鏃訛紝榪欎釜璁℃暟浼?xì)鍑忎竴錛岀洿鍒版渶鍚庝竴涓被鏋愭瀯鏃訛紝姝ゆ椂鐨?/span><span>RefCnt</span><span>涓?/span><span>1</span><span>鎴栨槸</span><span>0</span><span>錛屾鏃訛紝紼嬪簭鎵嶄細(xì)鐪熸鐨?/span><span>Free</span><span>榪欏潡浠庡爢涓婂垎閰嶇殑鍐呭瓨銆?/span><span><br /></span><span>鏄殑錛屽紩鐢ㄨ鏁板氨鏄?/span><span>string</span><span>綾諱腑鍐欐椂鎵嶆嫹璐濈殑鍘熺悊錛?/span><span><br /></span><span>      涓嶈繃錛岄棶棰樺張鏉ヤ簡(jiǎn)錛岃繖涓?/span><span>RefCnt</span><span>璇ュ瓨鍦ㄥ湪鍝噷鍛紵濡傛灉瀛樻斁鍦?/span><span>string</span><span>綾諱腑錛岄偅涔堟瘡涓?/span><span>string</span><span>鐨勫疄渚嬮兘鏈夊悇鑷殑涓濂楋紝鏍規(guī)湰涓嶈兘鍏辨湁涓涓?/span><span>RefCnt</span><span>錛屽鏋滄槸澹版槑鎴愬叏灞鍙橀噺錛屾垨鏄潤(rùn)鎬佹垚鍛橈紝閭e氨鏄墍鏈夌殑</span><span>string</span><span>綾誨叡浜竴涓簡(jiǎn)錛岃繖涔熶笉琛岋紝鎴戜滑闇瑕佺殑鏄竴涓?/span><span>“</span><span>姘戜富鍜岄泦涓?/span><span>”</span><span>鐨勪竴涓В鍐蟲柟娉曘傝繖鏄浣曞仛鍒扮殑鍛紵鍛靛懙錛屼漢鐢熷氨鏄竴涓硦娑傚悗鍘繪帰鐭ワ紝鐭ラ亾鍚庡拰鍙堢硦娑傜殑寰幆榪囩▼銆傚埆鎬ュ埆鎬ワ紝鍦ㄥ悗闈㈡垜浼?xì)缁欎綘涓涓閬撴潵鐨勩?/span><span><br /><br />2.3.1</span><span>銆?/span><span>string</span><span>綾誨湪浠涔堟儏鍐典笅鎵嶅叡浜唴瀛樼殑錛?/span><span><br /></span><span>      榪欎釜闂鐨勭瓟妗堝簲璇ユ槸鏄庢樉鐨勶紝鏍規(guī)嵁甯哥悊鍜岄昏緫錛屽鏋滀竴涓被瑕佺敤鍙︿竴涓被鐨勬暟鎹紝閭e氨鍙互鍏變韓琚嬌鐢ㄧ被鐨勫唴瀛樹簡(jiǎn)銆傝繖鏄緢鍚堢悊鐨勶紝濡傛灉浣犱笉鐢ㄦ垜鐨勶紝閭e氨涓嶇敤鍏變韓錛屽彧鏈変綘浣跨敤鎴戠殑錛屾墠鍙戠敓鍏變韓銆?/span><span><br /></span><span>      浣跨敤鍒殑綾葷殑鏁版嵁鏃訛紝鏃犻潪鏈変袱縐嶆儏鍐碉紝</span><span>1</span><span>錛変互鍒殑綾繪瀯閫犺嚜宸憋紝</span><span>2</span><span>錛変互鍒殑綾昏祴鍊箋傜涓縐嶆儏鍐墊椂浼?xì)瑙﹀彂鎷疯礉鏋勯犲嚱鏁幫紝絎簩縐嶆儏鍐典細(xì)瑙﹀彂璧嬪兼搷浣滅銆傝繖涓ょ鎯呭喌鎴戜滑閮藉彲浠ュ湪綾諱腑瀹炵幇鍏跺搴旂殑鏂規(guī)硶銆傚浜庣涓縐嶆儏鍐碉紝鍙渶瑕佸湪</span><span>string</span><span>綾葷殑鎷瘋礉鏋勯犲嚱鏁頒腑鍋氱偣澶勭悊錛岃鍏跺紩鐢ㄨ鏁扮瘡鍔狅紱鍚屾牱錛屽浜庣浜岀鎯呭喌錛屽彧闇瑕侀噸杞?/span><span>string</span><span>綾葷殑璧嬪兼搷浣滅錛屽悓鏍峰湪鍏朵腑鍔犱笂涓鐐瑰鐞嗐?/span><span><br /></span><span>      鍞犲彣鍑犲彞錛?/span><span><br />1</span><span>錛夋瀯閫犲拰璧嬪肩殑宸埆</span><span><br /></span><span>瀵逛簬鍓嶉潰閭d釜渚嬬▼涓殑榪欎袱鍙ワ細(xì)</span><span><br />     string str1 = "hello world";<br />     string str2 = str1;<br /></span><span>涓嶈浠ヤ負(fù)鏈?/span><span>“=”</span><span>灝辨槸璧嬪兼搷浣滐紝鍏跺疄錛岃繖涓ゆ潯璇彞絳変環(huán)浜庯細(xì)</span><span><br />     string str1 ("hello world");   //</span><span>璋冪敤鐨勬槸鏋勯犲嚱鏁?/span><span><br />     string str2 (str1);         //</span><span>璋冪敤鐨勬槸鎷瘋礉鏋勯犲嚱鏁?/span><span><br /></span><span>濡傛灉</span><span>str2</span><span>鏄笅闈㈢殑榪欐牱鎯呭喌錛?/span><span><br />string str2;     //</span><span>璋冪敤鍙傛暟榛樿涓虹┖涓茬殑鏋勯犲嚱鏁幫細(xì)</span><span>string str2(“”);<br />str2 = str1;   //</span><span>璋冪敤</span><span>str2</span><span>鐨勮祴鍊兼搷浣滐細(xì)</span><span>str2.operator=(str1);<br />2) </span><span>鍙︿竴縐嶆儏鍐?/span><span><br />     char tmp[]=”hello world”;<br />     string str1 = tmp;<br />     string str2 = tmp;<br /></span><span>榪欑鎯呭喌涓嬩細(xì)瑙﹀彂鍐呭瓨鐨勫叡浜悧錛熸兂褰撶劧鐨勶紝搴旇瑕佸叡浜傚彲鏄牴鎹垜浠墠闈㈡墍璇寸殑鍏變韓鍐呭瓨鐨勬儏鍐碉紝涓や釜</span><span>string</span><span>綾葷殑澹版槑鍜屽垵濮嬭鍙ュ茍涓嶇鍚堟垜鍓嶈堪鐨勪袱縐嶆儏鍐碉紝鎵浠ュ叾騫朵笉鍙戠敓鍐呭瓨鍏變韓銆傝屼笖錛?/span><span>C++</span><span>鐜版湁鐗規(guī)т篃鏃犳硶璁╂垜浠仛鍒板榪欑鎯呭喌榪涜綾葷殑鍐呭瓨鍏變韓銆?/span><span><br />      <br />2.3.2</span><span>銆?/span><span>string</span><span>綾誨湪浠涔堟儏鍐典笅瑙﹀彂鍐欐椂鎵嶆嫹璐濓紙</span><span>Copy-On-Write</span><span>錛?/span><span>?<br /></span><span>      鍝︼紝浠涔堟椂鍊欎細(xì)鍙戠幇鍐欐椂鎵嶆嫹璐濓紵寰堟樉鐒?dòng)灱屽綋鐒舵槸鍦ㄥ呑冺n鍚屼竴鍧楀唴瀛樼殑綾誨彂鐢熷唴瀹規(guī)敼鍙樻椂錛屾墠浼?xì)鍙戠?/span><span>Copy-On-Write</span><span>銆傛瘮濡?/span><span>string</span><span>綾葷殑</span><span>[]</span><span>銆?/span><span>=</span><span>銆?/span><span>+=</span><span>銆?/span><span>+</span><span>銆佹搷浣滅璧嬪鹼紝榪樻湁涓浜?/span><span>string</span><span>綾諱腑璇稿</span><span>insert</span><span>銆?/span><span>replace</span><span>銆?/span><span>append</span><span>絳夋垚鍛樺嚱鏁般?/span><span><br /></span><span>      淇敼鏁版嵁鎵嶄細(xì)瑙﹀彂</span><span>Copy-On-Write</span><span>錛屼笉淇敼褰撶劧灝變笉浼?xì)鏀瑰暒銆傝繖灝辨槸鎵樺歡鎴樻湳鐨勭湡璋涳紝闈炲埌瑕佸仛鐨勬椂鍊欐墠鍘誨仛銆?br /></span><span><br />2.3.3</span><span>銆?/span><span>Copy-On-Write</span><span>鏃訛紝鍙戠敓浜?jiǎn)浠涔堬紵</span><span><br /></span><span>      鎴戜滑鍙兘鏍規(guī)嵁閭d釜璁塊棶璁℃暟鏉ュ喅瀹氭槸鍚﹂渶瑕佹嫹璐濓紝鍙傜湅涓嬮潰鐨勪唬鐮侊細(xì)</span><span><br />If ( RefCnt>0 ) {<br />  char* tmp = (char*) malloc(strlen(_Ptr)+1);<br />  strcpy(tmp, _Ptr);<br />  _Ptr = tmp;<br />}<br /></span><span>      涓婇潰鐨勪唬鐮佹槸涓涓亣鎯崇殑鎷瘋礉鏂規(guī)硶錛屽鏋滄湁鍒殑綾誨湪寮曠敤錛堟鏌ュ紩鐢ㄨ鏁版潵鑾風(fēng)煡錛夎繖鍧楀唴瀛橈紝閭d箞灝遍渶瑕佹妸鏇存敼綾昏繘琛?/span><span>“</span><span>鎷瘋礉</span><span>”</span><span>榪欎釜鍔ㄤ綔銆?/span><span><br /></span><span>鎴戜滑鍙互鎶婅繖涓嫹鐨勮繍琛屽皝瑁呮垚涓涓嚱鏁幫紝渚涢偅浜涙敼鍙樺唴瀹圭殑鎴愬憳鍑芥暟浣跨敤銆?br /></span><span><br />2.3.4</span><span>銆?/span><span>Copy-On-Write</span><span>鐨勫叿浣撳疄鐜版槸鎬庝箞鏍風(fēng)殑錛?/span> <p><span>      鏈鍚庣殑榪欎釜闂錛屾垜浠富瑕佽В鍐崇殑鏄偅涓?/span><span>“</span><span>姘戜富闆嗕腑</span><span>”</span><span>鐨勯毦棰樸傝鍏堢湅涓嬮潰鐨勪唬鐮侊細(xì)</span><span><br />string h1 = “hello”;<br />string h2= h1;<br />string h3;<br />h3 = h2;<br />string w1 = “world”;<br />string w2(“”);<br />w2=w1;       <br /></span><span>      寰堟槑鏄撅紝鎴戜滑瑕佽</span><span>h1</span><span>銆?/span><span>h2</span><span>銆?/span><span>h3</span><span>鍏變韓鍚屼竴鍧楀唴瀛橈紝璁?/span><span>w1</span><span>銆?/span><span>w2</span><span>鍏變韓鍚屼竴鍧楀唴瀛樸傚洜涓猴紝鍦?/span><span>h1</span><span>銆?/span><span>h2</span><span>銆?/span><span>h3</span><span>涓紝鎴戜滑瑕佺淮鎶や竴涓紩鐢ㄨ鏁幫紝鍦?/span><span>w1</span><span>銆?/span><span>w2</span><span>涓垜浠張瑕佺淮鎶や竴涓紩鐢ㄨ鏁般?/span><span><br /></span><span>      濡備綍浣跨敤涓涓閥濡欑殑鏂規(guī)硶浜х敓榪欎袱涓紩鐢ㄨ鏁板憿錛熸垜浠兂鍒頒簡(jiǎn)</span><span>string</span><span>綾葷殑鍐呭瓨鏄湪鍫嗕笂鍔ㄦ佸垎閰嶇殑錛屾棦鐒跺叡浜唴瀛樼殑鍚勪釜綾繪寚鍚戠殑鏄悓涓涓唴瀛樺尯錛屾垜浠負(fù)浠涔堜笉鍦ㄨ繖鍧楀尯涓婂鍒嗛厤涓鐐圭┖闂存潵瀛樻斁榪欎釜寮曠敤璁℃暟鍛紵榪欐牱涓鏉ワ紝鎵鏈夊叡浜竴鍧楀唴瀛樺尯鐨勭被閮芥湁鍚屾牱鐨勪竴涓紩鐢ㄨ鏁幫紝鑰岃繖涓彉閲忕殑鍦板潃鏃㈢劧鏄湪鍏變韓鍖轟笂鐨勶紝閭d箞鎵鏈夊叡浜繖鍧楀唴瀛樼殑綾婚兘鍙互璁塊棶鍒幫紝涔熷氨鐭ラ亾榪欏潡鍐呭瓨鐨勫紩鐢ㄨ呮湁澶氬皯浜?jiǎn)銆?/span><span><br /></span><span><br /></span><span>      浜庢槸錛屾湁浜?jiǎn)杩欐牱涓涓満鍒訛紝姣忓綋鎴戜滑涓?/span><span>string</span><span>鍒嗛厤鍐呭瓨鏃訛紝鎴戜滑鎬繪槸瑕佸鍒嗛厤涓涓┖闂寸敤鏉ュ瓨鏀捐繖涓紩鐢ㄨ鏁扮殑鍊鹼紝鍙鍙戠敓鎷瘋礉鏋勯犳垨鏄祴鍊兼椂錛岃繖涓唴瀛樼殑鍊煎氨浼?xì)鍔犱竴銆傝屽湪鍐呭淇敼鏃訛紝</span><span>string</span><span>綾諱負(fù)鏌ョ湅榪欎釜寮曠敤璁℃暟鏄惁涓?/span><span>0</span><span>錛屽鏋滀笉涓洪浂錛岃〃紺烘湁浜哄湪鍏變韓榪欏潡鍐呭瓨錛岄偅涔堣嚜宸遍渶瑕佸厛鍋氫竴浠芥嫹璐濓紝鐒跺悗鎶婂紩鐢ㄨ鏁板噺鍘諱竴錛屽啀鎶婃暟鎹嫹璐濊繃鏉ャ備笅闈㈢殑鍑犱釜紼嬪簭鐗囨璇存槑浜?jiǎn)杩欎袱涓姩浣滃Q?/span><span><br /> //</span><span>鏋勯犲嚱鏁幫紙鍒嗗瓨鍐呭瓨錛?/span><span> <br />  string::string(const char* tmp)<br />{<br />  _Len = strlen(tmp);<br />  _Ptr = new char[_Len+1+1];<br />  strcpy( _Ptr, tmp );<br />  _Ptr[_Len+1]=0; // </span><span>璁劇疆寮曠敤璁℃暟</span><span>   <br />}<br />//</span><span>鎷瘋礉鏋勯狅紙鍏變韓鍐呭瓨錛?/span><span><br />  string::string(const string& str)<br />  {<br />      if (*this != str){<br />        this->_Ptr = str.c_str();   //</span><span>鍏變韓鍐呭瓨</span><span><br />        this->_Len = str.szie();<br />        this->_Ptr[_Len+1] ++; //</span><span>寮曠敤璁℃暟鍔犱竴</span><span><br />      }<br />}<br />//</span><span>鍐欐椂鎵嶆嫹璐?/span><span>Copy-On-Write<br />char& string::operator[](unsigned int idx)<br />{<br />  if (idx > _Len || _Ptr == 0 ) <br />  {<br />      static char nullchar = 0;<br />      return nullchar;<br />  }<br />  _Ptr[_Len+1]--;   //</span><span>寮曠敤璁℃暟鍑忎竴</span><span><br />  char* tmp = new char[_Len+1+1];<br />  strncpy( tmp, _Ptr, _Len+1);<br />  _Ptr = tmp;<br />  _Ptr[_Len+1]=0; // </span><span>璁劇疆鏂扮殑鍏變韓鍐呭瓨鐨勫紩鐢ㄨ鏁?/span><span><br />  <br />  return _Ptr[idx];<br />}       <br /></span><span>      鍝堝搱錛屾暣涓妧鏈粏鑺傚畬鍏ㄦ誕鍑烘按闈€?/span><span><br /></span><span>      涓嶈繃錛岃繖鍜?/span><span>STL</span><span>涓?/span><span>basic_string</span><span>鐨勫疄鐜扮粏鑺傝繕鏈変竴鐐圭偣宸埆錛屽湪浣犳墦寮</span><span>STL</span><span>鐨勬簮鐮佹椂錛屼綘浼?xì)鍙戠幇鍏跺彇寮曠敤璁℃暟鏄氳繃榪欐牱鐨勮闂細(xì)</span><span>_Ptr[-1]</span><span>錛屾爣鍑嗗簱涓紝鎶婅繖涓紩鐢ㄨ鏁扮殑鍐呭瓨鍒嗛厤鍦ㄤ簡(jiǎn)鍓嶉潰錛堟垜緇欏嚭鏉ョ殑浠g爜鏄妸寮曠敤璁℃暟鍒嗛厤浠ヤ簡(jiǎn)鍚庨潰錛岃繖寰堜笉濂斤級(jí)錛屽垎閰嶅湪鍓嶇殑濂藉鏄綋</span><span>string</span><span>鐨勯暱搴︽墿灞曟椂錛屽彧闇瑕佸湪鍚庨潰鎵╁睍鍏跺唴瀛橈紝鑰屼笉闇瑕佺Щ鍔ㄥ紩鐢ㄨ鏁扮殑鍐呭瓨瀛樻斁浣嶇疆錛岃繖鍙堣妭鐪佷簡(jiǎn)涓鐐規(guī)椂闂淬?/span><span><br />      STL</span><span>涓殑</span><span>string</span><span>鐨勫唴瀛樼粨鏋勫氨鍍忔垜鍓嶉潰鐢葷殑閭d釜鍥句竴鏍鳳紝</span><span>_Ptr</span><span>鎸囩潃鏄暟鎹尯錛岃?/span><span>RefCnt</span><span>鍒欏湪</span><span>_Ptr-1 </span><span>鎴栨槸</span><span> _Ptr[-1]</span><span>澶勩?br /></span><span><br />2.4</span><span>銆?/span><span>鑷櫕</span><span>Bug<br /></span><span>      鏄皝璇寸殑</span><span>“</span><span>鏈夊お闃崇殑鍦版柟灝變細(xì)鏈夐粦鏆?/span><span>”</span><span>錛熸垨璁告垜浠腑鐨勮澶氫漢閮藉緢榪蜂俊鏍囧噯鐨勪笢瑗匡紝璁や負(fù)鍏舵槸涔呯粡鑰冮獙錛屼笉鍙兘鍑洪敊鐨勩傚懙鍛碉紝鍗冧竾涓嶈鏈夎繖縐嶈糠淇★紝鍥犱負(fù)浠諱綍璁捐鍐嶅ソ錛岀紪鐮佸啀濂界殑浠g爜鍦ㄦ煇涓鐗瑰畾鐨勬儏鍐典笅閮戒細(xì)鏈?/span><span>Bug</span><span>錛?/span><span>STL</span><span>鍚屾牱濡傛錛?/span><span>string</span><span>綾葷殑榪欎釜鍏變韓鍐呭瓨</span><span>/</span><span>鍐欐椂鎵嶆嫹璐濇妧鏈篃涓嶄緥澶栵紝鑰屼笖榪欎釜</span><span>Bug</span><span>鎴栬榪樹細(xì)璁╀綘鐨勬暣涓▼搴?/span><span>crash</span><span>鎺夛紒</span><span>涓嶄俊錛燂紒閭d箞璁╂垜浠潵鐪嬩竴涓祴璇曟渚嬶細(xì)</span><span><br /></span><span>      鍋囪鏈変竴涓姩鎬侀摼鎺ュ簱錛堝彨</span><span>myNet.dll</span><span>鎴?/span><span>myNet.so</span><span>錛変腑鏈夎繖鏍蜂竴涓嚱鏁拌繑鍥炵殑鏄?/span><span>string</span><span>綾伙細(xì)</span><span><br />string GetIPAddress(string hostname)<br />{<br />  static string ip;<br />  ……<br />  ……<br />  return ip;<br />}<br />      <br /></span><span>鑰屼綘鐨勪富紼嬪簭涓姩鎬佸湴杞藉叆榪欎釜鍔ㄦ侀摼鎺ュ簱錛屽茍璋冪敤鍏朵腑鐨勮繖涓嚱鏁幫細(xì)</span><span><br />main()<br />{<br />//</span><span>杞藉叆鍔ㄦ侀摼鎺ュ簱涓殑鍑芥暟</span><span><br />hDll = LoadLibraray(…..);<br />pFun = GetModule(hDll, “GetIPAddress”);<br />//</span><span>璋冪敤鍔ㄦ侀摼鎺ュ簱涓殑鍑芥暟</span><span><br />string ip = (*pFun)(“host1”);<br />……<br />……<br />//</span><span>閲婃斁鍔ㄦ侀摼鎺ュ簱</span><span><br />FreeLibrary(hDll);<br />……<br />cout << ip << endl;<br />}<br />      <br /></span><span>      璁╂垜浠潵鐪嬬湅榪欐浠g爜錛岀▼搴忎互鍔ㄦ佹柟寮忚澆鍏ュ姩鎬侀摼鎺ュ簱涓殑鍑芥暟錛岀劧鍚庝互鍑芥暟鎸囬拡鐨勬柟寮忚皟鐢ㄥ姩鎬侀摼鎺ュ簱涓殑鍑芥暟錛屽茍鎶婅繑鍥炲兼斁鍦ㄤ竴涓?/span><span>string</span><span>綾諱腑錛岀劧鍚庨噴鏀句簡(jiǎn)榪欎釜鍔ㄦ侀摼鎺ュ簱銆傞噴鏀懼悗錛岃緭鍏?/span><span>ip</span><span>鐨勫唴瀹廣?/span><span><br /></span><span>      鏍規(guī)嵁鍑芥暟鐨勫畾涔夛紝鎴戜滑鐭ラ亾鍑芥暟鏄?/span><span>“</span><span>鍊艱繑鍥?/span><span>”</span><span>鐨勶紝鎵浠ワ紝鍑芥暟榪斿洖鏃訛紝涓瀹氫細(xì)璋冪敤鎷瘋礉鏋勯犲嚱鏁幫紝鍙堟牴鎹?/span><span>string</span><span>綾葷殑鍐呭瓨鍏變韓鏈哄埗錛屽湪涓葷▼搴忎腑鍙橀噺</span><span>ip</span><span>鏄拰鍑芥暟鍐呴儴鐨勯偅涓潤(rùn)鎬?/span><span>string</span><span>鍙橀噺鍏變韓鍐呭瓨錛堣繖鍧楀唴瀛樺尯鏄湪鍔ㄦ侀摼鎺ュ簱鐨勫湴鍧絀洪棿鐨勶級(jí)銆傝屾垜浠亣璁懼湪鏁翠釜涓葷▼搴忎腑閮芥病鏈夊</span><span>ip</span><span>鐨勫艱繘琛屼慨鏀硅繃銆傞偅涔堝湪褰撲富紼嬪簭閲婃斁浜?jiǎn)鍔ㄦ侀摼鎺ュ簱鍚庯紝閭d釜鍏變韓鐨勫唴瀛樺尯涔熼殢涔嬮噴鏀俱傛墍浠ワ紝浠ュ悗瀵?/span><span>ip</span><span>鐨勮闂紝蹇呯劧鍋氶犳垚鍐呭瓨鍦板潃璁塊棶闈炴硶錛岄犳垚紼嬪簭</span><span>crash</span><span>銆傚嵆浣夸綘鍦ㄤ互鍚庢病鏈変嬌鐢ㄥ埌</span><span>ip</span><span>榪欎釜鍙橀噺錛岄偅涔堝湪涓葷▼搴忛鍑烘椂涔熶細(xì)鍙戠敓鍐呭瓨璁塊棶寮傚父錛屽洜涓虹▼搴忛鍑烘椂錛?/span><span>ip</span><span>浼?xì)鏋愭瀯锛屽湪鏋愭瀯鏃稙兗?xì)鍙戠敓鍐呭瓨璁塊棶寮傚父銆?/span><span><br /></span><span>      鍐呭瓨璁塊棶寮傚父錛屾剰鍛崇潃涓や歡浜嬶細(xì)<br /></span><span>1</span><span>錛夋棤璁轟綘鐨勭▼搴忓啀婕備寒錛岄兘浼?xì)鍥犱给櫩欎釜閿欒鍙樺緱鏆楁贰鏃犲厜锛屼綘鐨勫0瑾変篃浼?xì)鍥犱負(fù)榪欎釜閿欒鍙楀埌鎹熷け銆?br /></span><span>2</span><span>錛夋湭鏉ョ殑涓孌墊椂闂達(dá)紝浣犱細(xì)琚繖涓郴緇熺駭閿欒鎵鐓庣啲錛堝湪</span><span>C++</span><span>涓栫晫涓紝鎵懼埌騫舵帓闄よ繖縐嶅唴瀛橀敊璇茍涓嶆槸涓浠跺鏄撶殑浜嬫儏錛夈?br />      榪欐槸</span><span>C/C++</span><span>紼嬪簭鍛樻案榪滅殑蹇?jī)澶翠箣鐥涘Q屽崈閲屼箣鍫わ紝婧冧簬铓佺┐銆傝屽鏋滀綘涓嶆竻妤?/span><span>string</span><span>綾葷殑榪欑鐗瑰緛錛屽湪鎴愬崈涓婁竾琛屼唬鐮佷腑鎵捐繖鏍蜂竴涓唴瀛樺紓甯革紝綆鐩村氨鏄竴鍦哄櫓姊︺?/span><span><br /></span><span>澶囨敞錛氳鏀規(guī)涓婅堪鐨?/span><span>Bug</span><span>錛屾湁寰堝縐嶆柟娉曪紝榪欓噷鎻愪緵涓縐嶄粎渚涘弬鑰冿細(xì)</span><span><br />string ip = (*pFun)(“host1”).cstr();<br /><br />3</span><span>銆?/span><span>鍚庤</span><span><br /></span><span>      鏂囩珷鍒拌繖閲屼篃搴旇緇撴潫浜?jiǎn)锛寴q欑瘒鏂囩珷鐨勪富瑕佹湁浠ヤ笅鍑犱釜鐩殑錛?/span><span><br />1</span><span>錛?/span> <span>鍚戝ぇ瀹朵粙緇嶄竴涓嬪啓鏃舵墠鎷瘋礉</span><span>/</span><span>鍐呭瓨鍏變韓榪欑鎶鏈?/span><span><br />2</span><span>錛?/span> <span>浠?/span><span>STL</span><span>涓殑</span><span>string</span><span>綾諱負(fù)渚嬶紝鍚戝ぇ瀹朵粙緇嶄簡(jiǎn)涓縐嶈璁℃ā寮忋?/span><span><br />3</span><span>錛?/span> <span>鍦?/span><span>C++</span><span>涓栫晫涓紝鏃犺浣犵殑璁捐鎬庝箞綺懼閥錛屼唬鐮佹庝箞紼沖浐錛岄兘闅句互鐓ч【鍒版墍鏈夌殑鎯呭喌銆傛櫤鑳芥寚閽堟洿鏄竴涓吀鍨嬬殑渚嬪瓙錛屾棤璁轟綘鎬庝箞璁捐錛岄兘浼?xì)鏈夐潪甯镐弗閲嶇?/span><span>BUG</span><span>銆?/span><span><br />4</span><span>錛?/span><span> C++</span><span>鏄竴鎶婂弻鍒冨墤錛屽彧鏈変簡(jiǎn)瑙d簡(jiǎn)鍘熺悊錛屼綘鎵嶈兘鏇村ソ鐨勪嬌鐢?/span><span>C++</span><span>銆傚惁鍒欙紝蹇呭皢寮曠伀鐑ц韓銆傚鏋滀綘鍦ㄨ璁″拰浣跨敤綾誨簱鏃舵湁涓縐?/span><span>“</span><span>鐜?/span><span>C++</span><span>灝卞儚鐜╃伀錛屽繀欏誨崈涓囧皬蹇?/span><span>”</span><span>鐨勬劅瑙夛紝閭d箞浣犲氨鍏ラ棬浜?jiǎn)锛尳{変綘鑳芥妸榪欒偂</span><span>“</span><span>鐏?/span><span>”</span><span>鎺у埗鐨勫緱蹇?jī)搴旀墜鏃跺Q岄偅鎵嶆槸瀛︽垚浜?jiǎn)銆?/span><span><br /><br /></span></p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-27 22:56 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65255.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Singleton妯″紡錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65252.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Mon, 27 Oct 2008 14:51:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65252.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65252.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65252.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65252.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65252.html</trackback:ping><description><![CDATA[class Singleton<br />{<br /> <p><span>public:</span></p> <p><span><span>    </span>static Singleton* Instance();</span></p> <p><span>protected:</span></p> <p><span><span>    </span>Singleton();</span></p> <p><span>private:</span></p> <p><span><span>    </span>static Singleton* _instance;</span></p> <p><span>};<span>      </span></span></p> <p><span>鐩稿簲鐨勫疄鐜?/span><span> cpp </span><span>鏂囦歡鏄細(xì)</span></p> <p><span>Singleton* Singleton::_instance;</span></p> <p><span>Singleton* Singleton::Instance()<br />{</span></p> <p><span><span>    </span>if( _instance == 0){</span></p> <p><span><span>        </span>_instance = new Singleton;</span></p> <p><span><span>    </span>};</span></p> <p><span><span>    </span>return _instance;</span></p> <p><span>}<span>      </span></span></p> <p><span><span>    </span></span><span>灝嗘瀯閫犲嚱鏁拌璁℃垚</span><span> protected </span><span>鐨勭洰鐨勬槸闃叉鍦?/span><span> class </span><span>澶栭潰</span><span> new </span><span>錛屾湁浜哄彲鑳戒細(xì)璁捐鎴?/span><span> private </span><span>錛屽亣濡傝冭檻鍒版湁鍙兘浼?xì)鐟艟l繖涓被鐨勮瘽錛岃繕鏄皢鏋勯犲嚱鏁拌璁℃垚</span><span> protected </span><span>姣旇緝濂斤紝榪橀渶瑕佸姞涓涓?/span><span> virtual </span><span>鏋愭瀯鍑芥暟銆備負(fù)浜?jiǎn)闃叉鍒汉澶嶅?/span><span> Singleton </span><span>瀵硅薄錛?/span></p> <p><span>Singleton* pSingleton = Singleton::Instance();</span></p> <p><span>Singleton s1 = *pSingleton;</span></p> <p><span>Singleton s2 = *pSingleton; </span></p> <p><span>闇瑕佸皢鎷瘋礉鏋勯?/span><span>(copy constrUCtor)</span><span>鍑芥暟鍙樻垚</span><span> private</span><span>銆?/span></p> <p><span><span>    </span></span><span>浣嗘槸榪欓噷瀛樺湪鐨勯棶棰樻槸錛屼粈涔堟椂鍊?/span><span style="color: #ffff00;">鍒犻櫎</span><span style="color: #ffff00;"> Singleton </span><span style="color: #ffff00;">瀵硅薄</span><span>錛熸寜鐓?/span><span> C++ </span><span>鐨勪竴涓熀鏈師鍒欙紝瀵硅薄鍦ㄥ摢閲屽垱寤哄氨鍦ㄥ摢閲岄攢姣侊紝榪欓噷榪樺簲璇ユ斁涓涓?/span><span> destroy </span><span>鏂規(guī)硶鏉ュ垹闄?/span><span> Singleton </span><span>瀵硅薄銆傚亣濡傚繕浜?jiǎn)鍒犻櫎灏辨瘮杈冮喝潈?chǔ)銆?/span><span>Instance </span><span>鍑芥暟榪樺瓨鍦?/span><span style="color: #ffff00;">澶氱嚎紼嬪悓鏃惰闂殑鍔犻攣闂</span><span>銆傚亣濡傛妸</span><span> Instance </span><span>鍑芥暟寮濮嬪拰緇撳熬鏀句笂鍔犻攣鍜岃В閿侊紝鏁翠釜鍑芥暟鎬ц兘浼?xì)涓嬮檷寰堝銆傝繖涓嶆槸涓涓ソ鐨勮璁°?/span></p> <p><span><span>    </span></span><span>鏈変竴涓皬灝忕殑鏀瑰姩錛屽彲浠ラ伩鍏嶅繕浜?jiǎn)鍒犻?/span><span> Singleton </span><span>瀵硅薄甯︽潵鍐呭瓨娉勯湶鐨勯棶棰樸傞偅灝辨槸鐢?/span><span> </span><span style="color: #ffff00;">std:auto_ptr </span><span>鏉ュ寘鍚?/span><span> Singleton </span><span>瀵硅薄</span><span>,</span><span>瀹氫箟涓涓被闈?rùn)鎬?/span><span>auto_ptr鎴愬憳</span><span>瀵硅薄錛屽湪鏋愭瀯闈?rùn)鎬佺殑</span><span>auto_ptr </span><span>鍙橀噺鐨勬椂鍊欐椂鍊欒嚜鍔ㄥ垹闄?/span><span> Singleton </span><span>瀵硅薄銆備負(fù)浜?jiǎn)涓嶈鐢ㄦ?/span><span> delete Singleton </span><span>瀵硅薄錛岄渶瑕佸皢鏋愭瀯鍑芥暟鐢?/span><span> public </span><span>鍙樻垚</span><span> protected</span><span>銆備互涓嬫槸澶存枃浠?/span><span> SingletonAutoPtr.h </span><span>錛?/span></p> <p><span>#include <memory></span></p> <p><span>using namespace std;</span></p> <p><span>class CSingletonAutoPtr </span></p> <p><span>{</span></p> <p><span>private:</span></p> <p><span><span>    </span>static auto_ptr<CSingletonAutoPtr> m_auto_ptr; </span></p> <p><span><span>    </span>static CSingletonAutoPtr* m_instance;</span></p> <p><span>protected:</span></p> <p><span><span>    </span>CSingletonAutoPtr();</span></p> <p><span><span>    </span>CSingletonAutoPtr(const CSingletonAutoPtr&);</span></p> <p><span><span>    </span>virtual ~CSingletonAutoPtr(); </span></p> <p><span><span>    </span>//allow auto_ptr to delete, using protected ~CSingletonAutoPtr()</span></p> <p><span><span>    </span>friend class auto_ptr<CSingletonAutoPtr>; </span></p> <p><span>public:</span></p> <p><span><span>    </span>static CSingletonAutoPtr* GetInstance();</span></p> <p><span><span>    </span>void Test();</span></p> <p><span>};<span>   </span></span></p> <p><span>瀵瑰簲鐨?/span><span> SingletonAutoPtr.cpp </span><span>濡備笅錛?/span></p> <p><span>#include "SingletonAutoPtr.h"</span></p> <p><span>#include <iostream><br /><br />//initial static member vars here </span></p> <p><span>CSingletonAutoPtr* CSingletonAutoPtr::m_instance = NULL;</span></p> <p><span>auto_ptr<CSingletonAutoPtr> CSingletonAutoPtr::m_auto_ptr;</span></p> <p> </p> <p><span>/////////////////////////////////////////</span></p> <p><span>// Construction/Destruction</span></p> <p><span>/////////////////////////////////////////</span></p> <p><br />//涓嬪垪浠g爜娌℃湁緇忚繃楠岃瘉錛?/p> <p><span>CSingletonAutoPtr::CSingletonAutoPtr()</span></p> <p><span>{</span></p> <p><span><span>    </span>cout << "CSingletonAutoPtr::CSingletonAutoPtr()" << endl;</span></p> <p><span><span>    </span>//put single object into auto_ptr object </span></p> <p><span><span>    </span>m_auto_ptr = auto_ptr<CSingletonAutoPtr>(this);</span></p> <p><span>}</span></p> <p><span>CSingletonAutoPtr::~CSingletonAutoPtr()</span></p> <p><span>{</span></p> <p><span><span>    </span>cout << "CSingletonAutoPtr::~CSingletonAutoPtr()" << endl;</span></p> <p><span>}</span></p> <p><span>CSingletonAutoPtr* CSingletonAutoPtr::GetInstance()</span></p> <p><span>{</span></p> <p><span><span>    </span>//begin lock</span></p> <p><span><span>    </span>//....<span>    <br /></span>    if(m_instance == NULL)</span></p> <p><span><span>        </span>m_instance = new CSingletonAutoPtr();<span>    <br /></span>    //end lock</span></p> <p><span><span>    </span>//...<span>    <br /></span>    return m_instance; </span></p> <p><span>}</span></p> <p><span>void CSingletonAutoPtr::Test()</span></p> <p><span>{</span></p> <p><span><span>    </span>cout << "CSingletonAutoPtr::Test()" << endl;</span></p> <p><span>}<span>     </span></span></p> <p><span>璋冪敤鏂規(guī)硶錛?/span></p> <p><span>CSingletonAutoPtr* pSingleton = CSingletonAutoPtr::GetInstance();</span></p> <p><span>pSingleton->Test(); </span></p> <p>      鍐欎竴涓?C++ 涓殑 Singleton 闇瑕佽繖涔堣垂鍔詫紝澶уぇ鍑轟箮鎴戜滑鐨勬剰鏂欍傛湁寰堝浜轟粠鏈敤榪?auto_ptr錛岃屼笖 std:auto_ptr 鏈韓灝卞茍涓嶅畬緹庯紝瀹冩槸鍩轟簬瀵硅薄鎵鏈夋潈鏈哄埗鐨勶紝鐩告瘮涔嬩笅錛孉pache Log4cxx 涓湁涓涓?auto_ptr, 鏄熀浜庡璞¤鏁扮殑錛屾洿涓哄ソ鐢ㄣ傚彧鏄負(fù)浜?jiǎn)鐢ㄤ竴涓ソ鐨?auto_ptr 鑰屼笉寰椾笉鐢?log4cxx , 瀵逛簬寰堝欏圭洰鏉ヨ錛屼篃涓嶅お濂姐傚綋鐒朵簡(jiǎn)錛孉NSI C++ 鐨?STL 涓?std:auto_ptr 瀵逛簬鍐欎笂闈㈢殑渚嬪瓙宸茬粡瓚沖鐢ㄤ簡(jiǎn)銆?nbsp;    </p><p>      <span>鍙﹀涓涓濊礬鏄紝鎶?/span><span> GetInstance </span><span>鍑芥暟璁捐鎴?/span><span> static member </span><span>鍙兘鏇村ソ錛屽洜涓轟竴鑸潵璇達(dá)紝</span><span>Singleton </span><span>瀵硅薄閮戒笉澶э紝</span><span>static member </span><span>铏界劧蹇呴』涓鐩村崰鐢ㄥ唴瀛橈紝闂涓嶅ぇ銆傝繖閲岀殑鏋愭瀯鍑芥暟蹇呴』璁炬垚</span><span> public </span><span>浜?jiǎn)銆備互涓嬫槸澶存枃浠?/span><span> SingleStaticObj.h</span></p> <p><span>class CSingletonStaticObj </span></p> <p><span>{</span></p> <p><span>private:</span></p> <p><span><span>    </span>static CSingletonStaticObj m_instance;</span></p> <p><span>protected:</span></p> <p><span><span>    </span>CSingletonStaticObj();</span></p> <p><span> <span>  </span>CSingletonStaticObj(const CSingletonStaticObj&);</span></p> <p><span>public:</span></p> <p><span><span>    </span>virtual ~CSingletonStaticObj(); //must public</span></p> <p><span><span>    </span>static CSingletonStaticObj& GetInstance();</span></p> <p><span><span>    </span>void Test();</span></p> <p><span>};<span>     </span></span><span>瀵瑰簲鐨?/span><span> SingleStaticObj.cpp </span><span>鏂囦歡涓猴細(xì)</span><span>#include "SingletonStaticObj.h"</span></p> <p><span>#include <string></span></p> <p><span>#include <iostream> </span></p> <p><span>using namespace std;</span></p> <p><span>CSingletonStaticObj CSingletonStaticObj::m_instance;CSingletonStaticObj::CSingletonStaticObj()</span></p> <p><span>{</span></p> <p><span><span>    </span>cout << "CSingletonStaticObj::CSingletonStaticObj()" << endl;</span></p> <p><span>}</span></p> <p><span>CSingletonStaticObj::~CSingletonStaticObj()</span></p> <p><span>{</span></p> <p><span> <span>   </span>cout << "CSingletonStaticObj::~CSingletonStaticObj()" << endl;</span></p> <p><span>}</span></p> <p><span>CSingletonStaticObj& CSingletonStaticObj::GetInstance()</span></p> <p><span>{</span></p> <p><span><span>    </span>return m_instance;</span></p> <p><span>}</span></p> <p><span>void CSingletonStaticObj::Test()</span></p> <p><span>{</span></p> <p><span><span>    </span>cout << "CSingletonStaticObj::Test()" << endl;</span></p> <p><span>}</span></p> <p><span><span>     </span></span><span>璋冪敤鏂規(guī)硶錛?/span></p> <p><span>CSingletonStaticObj& singleton = CSingletonAutoPtr::GetInstance();</span></p> <p><span>singleton.Test();<span>     </span></span></p> <p><span>浠庝唬鐮侀噺鏉ヨ錛屼技涔庝嬌鐢?/span><span> static member ref </span><span>鏇翠負(fù)綆鍗曘傛垜鏇村亸鍚戜簬鐢ㄨ繖縐嶆柟娉曘?/span></p> <p><span><span>    </span></span><span>浣嗘槸錛屽茍涓嶆槸鎵鏈夋儏鍐典笅闈㈤兘閫傚悎鐢?/span><span> static member singleton</span><span>銆傛瘮濡傝錛?/span><span>GetInstance </span><span>闇瑕佸姩鎬佸喅瀹氳繑鍥炰笉鍚岀殑</span><span> instance </span><span>鐨勬椂鍊欙紝灝變笉鑳界敤銆備婦渚嬫潵璇達(dá)紝</span><span>FileSystem::GetInstance, </span><span>鍦?/span><span> windows </span><span>涓嬮潰榪愯鍙兘闇瑕佽繑鍥?/span><span> new WinFileSystem, Linux/Unix </span><span>涓嬮潰榪愯鍙兘闇瑕佽繑鍥?/span><span> new LinuxFileSystem</span><span>錛岃繖涓椂鍊欒繕鏄渶瑕佺敤涓婇潰鐨?/span><span> auto_ptr </span><span>鍖呭惈</span><span> singleton </span><span>鎸囬拡鐨勬柟娉曘?/span></p><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65252.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-27 22:51 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65252.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>iterator涓殑鍓?+鍜屽悗++錛圕++錛?/title><link>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65239.html</link><dc:creator>zml_cnnk</dc:creator><author>zml_cnnk</author><pubDate>Mon, 27 Oct 2008 13:22:00 GMT</pubDate><guid>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65239.html</guid><wfw:comment>http://m.shnenglu.com/zmllegtui/comments/65239.html</wfw:comment><comments>http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zmllegtui/comments/commentRss/65239.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zmllegtui/services/trackbacks/65239.html</trackback:ping><description><![CDATA[     鎽樿: for(iterator it = begin(); it != end(); ++it) <br> 鎴栬?<br>for(iterator it = begin(); it != end(); it++) <br> 鍖哄埆鏄粈涔堝憿錛燂紵 <br>鈥︹?<br> <br>  <a href='http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65239.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zmllegtui/aggbug/65239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zmllegtui/" target="_blank">zml_cnnk</a> 2008-10-27 21:22 <a href="http://m.shnenglu.com/zmllegtui/archive/2008/10/27/65239.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://balqueen.com" target="_blank">最新亚洲视频</a>| <a href="http://yyyy456.com" target="_blank">最新国产の精品合集bt伙计</a>| <a href="http://www-119049.com" target="_blank">99精品欧美一区</a>| <a href="http://www-438686.com" target="_blank">一区二区三区视频在线观看 </a>| <a href="http://98956888.com" target="_blank">卡通动漫国产精品</a>| <a href="http://maomi998.com" target="_blank">亚洲午夜国产成人av电影男同</a>| <a href="http://fdgkinetic.com" target="_blank">久久久五月婷婷</a>| <a href="http://979695.com" target="_blank">国产自产v一区二区三区c</a>| <a href="http://2938476.com" target="_blank">亚洲欧美视频在线</a>| <a href="http://592xyy.com" target="_blank">一本色道久久综合亚洲精品按摩 </a>| <a href="http://uuclassroom.com" target="_blank">欧美亚洲综合另类</a>| <a href="http://yw9677.com" target="_blank">国产精品丝袜91</a>| <a href="http://551731.com" target="_blank">亚洲在线一区二区</a>| <a href="http://1116333.com" target="_blank">日韩亚洲在线</a>| <a href="http://66889h.com" target="_blank">国产精品成人在线观看</a>| <a href="http://nxhjzddata.com" target="_blank">在线亚洲一区</a>| <a href="http://000695.com" target="_blank">99国产精品自拍</a>| <a href="http://gelaimeiwedding.com" target="_blank">欧美日韩一区二</a>| <a href="http://tristooges.com" target="_blank">亚洲午夜精品福利</a>| <a href="http://888ppxx.com" target="_blank">宅男精品视频</a>| <a href="http://y65v.com" target="_blank">国产麻豆91精品</a>| <a href="http://cp88966.com" target="_blank">久久久www免费人成黑人精品 </a>| <a href="http://335848.com" target="_blank">国产精品久久久久久久久久ktv </a>| <a href="http://1588vip.com" target="_blank">久久亚洲精品欧美</a>| <a href="http://511caifu.com" target="_blank">久久精品中文</a>| <a href="http://xyyssa.com" target="_blank">亚洲片在线观看</a>| <a href="http://kdy444.com" target="_blank">日韩一二三在线视频播</a>| <a href="http://8p3c.com" target="_blank">国产精品久久久久久av下载红粉 </a>| <a href="http://wwwmiya118.com" target="_blank">国产主播一区二区</a>| <a href="http://www033459.com" target="_blank">99精品国产在热久久婷婷</a>| <a href="http://5418002.com" target="_blank">久久久www成人免费毛片麻豆</a>| <a href="http://zw1019.com" target="_blank">国产精品视频久久</a>| <a href="http://969093.com" target="_blank">欧美在线日韩精品</a>| <a href="http://yw3329.com" target="_blank">午夜精品久久久久久</a>| <a href="http://www446168.com" target="_blank">国产日本欧美在线观看</a>| <a href="http://yc7878.com" target="_blank">久久久久国产精品www</a>| <a href="http://xxx6688.com" target="_blank">久久久噜噜噜</a>| <a href="http://13501680.com" target="_blank">夜色激情一区二区</a>| <a href="http://012488.com" target="_blank">亚洲已满18点击进入久久 </a>| <a href="http://anquye16.com" target="_blank">欧美亚洲午夜视频在线观看</a>| <a href="http://5456yy.com" target="_blank">午夜亚洲性色福利视频</a>| <a href="http://44ie.com" target="_blank">亚洲大片在线</a>| <a href="http://chinashixin.com" target="_blank">日韩天天综合</a>| <a href="http://junmatek.com" target="_blank">国产一区二区日韩</a>| <a href="http://qqcf9900.com" target="_blank">亚洲国产精品久久久久秋霞蜜臀</a>| <a href="http://www-136445.com" target="_blank">欧美精品不卡</a>| <a href="http://goutoujunshi.com" target="_blank">欧美一区二区三区精品</a>| <a href="http://456kp.com" target="_blank">亚洲精品国产精品久久清纯直播</a>| <a href="http://300644.com" target="_blank">亚洲国产精品久久久</a>| <a href="http://777888789.com" target="_blank">欧美日韩三级在线</a>| <a href="http://w7727.com" target="_blank">久久久久久夜</a>| <a href="http://660507jj.com" target="_blank">欧美理论在线</a>| <a href="http://sesese98.com" target="_blank">久久精品一区二区三区四区</a>| <a href="http://bixiuge.com" target="_blank">欧美成人免费在线观看</a>| <a href="http://wwwmm7777.com" target="_blank">亚洲免费在线视频一区 二区</a>| <a href="http://223zzz.com" target="_blank">久久久久久网</a>| <a href="http://67idid.com" target="_blank">亚洲欧美日韩一区二区在线</a>| <a href="http://49vvvv.com" target="_blank">欧美1区2区3区</a>| <a href="http://www-188444.com" target="_blank">欧美色另类天堂2015</a>| <a href="http://llamkos.com" target="_blank">久久嫩草精品久久久久</a>| <a href="http://928uc.com" target="_blank">欧美午夜无遮挡</a>| <a href="http://wwwgay456.com" target="_blank">欧美国产精品一区</a>| <a href="http://8x588.com" target="_blank">国产专区欧美专区</a>| <a href="http://www01614.com" target="_blank">一区二区三区精品视频在线观看</a>| <a href="http://ykk7.com" target="_blank">在线观看视频亚洲</a>| <a href="http://sese750.com" target="_blank">午夜精品久久久久久久蜜桃app </a>| <a href="http://2938423.com" target="_blank">久久大逼视频</a>| <a href="http://432dm.com" target="_blank">亚洲深夜福利</a>| <a href="http://nvpuwo22.com" target="_blank">久久视频国产精品免费视频在线</a>| <a href="http://mkaqiu.com" target="_blank">亚洲一区影音先锋</a>| <a href="http://bx989.com" target="_blank">欧美超级免费视 在线</a>| <a href="http://8090567.com" target="_blank">久久久777</a>| <a href="http://0061366.com" target="_blank">欧美午夜无遮挡</a>| <a href="http://72966t.com" target="_blank">亚洲国产视频直播</a>| <a href="http://cp88966.com" target="_blank">在线精品视频一区二区三四</a>| <a href="http://o10669.com" target="_blank">亚洲一区二区在线视频</a>| <a href="http://6868681.com" target="_blank">一区二区三区免费在线观看</a>| <a href="http://394141.com" target="_blank">麻豆成人精品</a>| <a href="http://caca060.com" target="_blank">久久久水蜜桃av免费网站</a>| <a href="http://yys4.com" target="_blank">欧美午夜精品久久久久久人妖</a>| <a href="http://aqdw2021.com" target="_blank">欧美大片在线看免费观看</a>| <a href="http://811914.com" target="_blank">韩国av一区二区三区在线观看</a>| <a href="http://160160160.com" target="_blank">日韩午夜中文字幕</a>| <a href="http://1397979.com" target="_blank">日韩亚洲一区在线播放</a>| <a href="http://977mo.com" target="_blank">欧美1区3d</a>| <a href="http://3s3v.com" target="_blank">欧美成人福利视频</a>| <a href="http://123086.com" target="_blank">激情五月综合色婷婷一区二区</a>| <a href="http://www0505nn.com" target="_blank">亚洲女同精品视频</a>| <a href="http://287975.com" target="_blank">亚洲一区二区黄</a>| <a href="http://138268.com" target="_blank">亚洲欧美日韩一区二区三区在线观看 </a>| <a href="http://www-37277.com" target="_blank">欧美日韩你懂的</a>| <a href="http://4448884.com" target="_blank">亚洲福利在线看</a>| <a href="http://928uc.com" target="_blank">在线看欧美视频</a>| <a href="http://hongzaixian.com" target="_blank">久久精品国语</a>| <a href="http://511caifu.com" target="_blank">欧美3dxxxxhd</a>| <a href="http://bx989.com" target="_blank">亚洲精品视频免费在线观看</a>| <a href="http://arielteam.com" target="_blank">免费欧美日韩</a>| <a href="http://cqrebo.com" target="_blank">亚洲激情在线视频</a>| <a href="http://xingba999.com" target="_blank">99re亚洲国产精品</a>| <a href="http://lalandapps.com" target="_blank">欧美久久久久久久</a>| <a href="http://nxhjzddata.com" target="_blank">艳女tv在线观看国产一区</a>| <a href="http://012928.com" target="_blank">在线性视频日韩欧美</a>| <a href="http://www-3121.com" target="_blank">欧美日韩无遮挡</a>| <a href="http://by4425.com" target="_blank">亚洲一区免费看</a>| <a href="http://hlyjh.com" target="_blank">欧美在线亚洲综合一区</a>| <a href="http://pabjzz.com" target="_blank">韩国av一区二区三区在线观看</a>| <a href="http://k37b.com" target="_blank">久久婷婷亚洲</a>| <a href="http://56701sy.com" target="_blank">欧美不卡高清</a>| <a href="http://chaoporn97.com" target="_blank">亚洲最新在线</a>| <a href="http://korean-edu.com" target="_blank">国产精品vvv</a>| <a href="http://arielteam.com" target="_blank">亚洲免费视频网站</a>| <a href="http://7811c.com" target="_blank">久久婷婷蜜乳一本欲蜜臀</a>| <a href="http://caogb.com" target="_blank">亚洲成在线观看</a>| <a href="http://yy6024.com" target="_blank">欧美日韩精品欧美日韩精品</a>| <a href="http://www35353.com" target="_blank">一区二区三区欧美激情</a>| <a href="http://my777752.com" target="_blank">欧美一区二区三区精品电影</a>| <a href="http://305838.com" target="_blank">激情欧美一区二区</a>| <a href="http://yw-95588.com" target="_blank">久久综合给合</a>| <a href="http://679776.com" target="_blank">亚洲欧洲在线看</a>| <a href="http://53xxxx.com" target="_blank">午夜精品久久久久久99热软件</a>| <a href="http://www90aaa.com" target="_blank">国产精品永久免费</a>| <a href="http://js6996.com" target="_blank">久久欧美中文字幕</a>| <a href="http://8410555.com" target="_blank">亚洲精品欧美日韩专区</a>| <a href="http://72nnnn.com" target="_blank">午夜在线一区二区</a>| <a href="http://036762.com" target="_blank">一色屋精品视频免费看</a>| <a href="http://www-44469.com" target="_blank">欧美成人高清</a>| <a href="http://62san.com" target="_blank">亚洲制服av</a>| <a href="http://llamkos.com" target="_blank">欧美mv日韩mv国产网站app</a>| <a href="http://woniuminsu.com" target="_blank">亚洲欧洲日产国产综合网</a>| <a href="http://wwww999.com" target="_blank">国产精品美女主播在线观看纯欲</a>| <a href="http://fs-nanxiang.com" target="_blank">性久久久久久久久久久久</a>| <a href="http://mgcc37.com" target="_blank">亚洲电影网站</a>| <a href="http://gx2020.com" target="_blank">久久国产免费看</a>| <a href="http://517hc5.com" target="_blank">亚洲精品乱码视频</a>| <a href="http://jx963.com" target="_blank">国产日韩成人精品</a>| <a href="http://www38ccc.com" target="_blank">欧美成年人视频</a>| <a href="http://phdy999.com" target="_blank">午夜视频在线观看一区二区</a>| <a href="http://17kfe.com" target="_blank">亚洲国产综合91精品麻豆</a>| <a href="http://jav69me.com" target="_blank">欧美亚洲视频</a>| <a href="http://seqingdao.com" target="_blank">一本色道久久综合亚洲精品小说 </a>| <a href="http://www-878009.com" target="_blank">免费日韩av</a>| <a href="http://www8888803.com" target="_blank">亚洲在线成人精品</a>| <a href="http://107766a.com" target="_blank">亚洲盗摄视频</a>| <a href="http://8484vivo.com" target="_blank">国产无一区二区</a>| <a href="http://mm-777.com" target="_blank">欧美国产激情</a>| <a href="http://4439x9.com" target="_blank">久久精品国产一区二区三区免费看</a>| <a href="http://gs-qintai.com" target="_blank">亚洲精品国精品久久99热</a>| <a href="http://456888com.com" target="_blank">久久精品最新地址</a>| <a href="http://990288.com" target="_blank">亚洲欧美日韩精品一区二区 </a>| <a href="http://ebmsci.com" target="_blank">欧美国产高潮xxxx1819</a>| <a href="http://114499com.com" target="_blank">午夜精品国产</a>| <a href="http://bizssr.com" target="_blank">亚洲最新在线视频</a>| <a href="http://096577.com" target="_blank">亚洲欧洲另类</a>| <a href="http://017492.com" target="_blank">免费看av成人</a>| <a href="http://667939.com" target="_blank">久久精品官网</a>| <a href="http://aimashe.com" target="_blank">亚洲欧美中文日韩v在线观看</a>| <a href="http://www492002.com" target="_blank">亚洲第一色在线</a>| <a href="http://7776701.com" target="_blank">国产一区二区中文字幕免费看</a>| <a href="http://6633kj.com" target="_blank">免费成人黄色</a>| <a href="http://989p.com" target="_blank">亚洲一区二区网站</a>| <a href="http://5553303.com" target="_blank">国产精品99久久久久久人</a>| <a href="http://dh03.com" target="_blank">午夜精品久久久久久久99水蜜桃</a>| <a href="http://xmzszx.com" target="_blank">欧美国产日韩视频</a>| <a href="http://6868681.com" target="_blank">亚洲人成小说网站色在线</a>| <a href="http://konwoosh.com" target="_blank">亚洲精品一区二区三区在线观看 </a>| <a href="http://9kkkb.com" target="_blank">亚洲精品一区二区三区樱花 </a>| <a href="http://by5130.com" target="_blank">亚洲欧美亚洲</a>| <a href="http://h15h15.com" target="_blank">99天天综合性</a>| <a href="http://xsxcn.com" target="_blank">91久久午夜</a>| <a href="http://22241com.com" target="_blank">欧美成人在线免费观看</a>| <a href="http://71oo.com" target="_blank">久久噜噜噜精品国产亚洲综合</a>| <a href="http://zzztt04.com" target="_blank">亚洲男人第一网站</a>| <a href="http://www-662553.com" target="_blank">亚洲一区亚洲</a>| <a href="http://cn1357.com" target="_blank">亚洲男人影院</a>| <a href="http://jafzjz.com" target="_blank">亚洲欧美日韩国产综合精品二区</a>| <a href="http://520844www.com" target="_blank">一区二区三区欧美在线观看</a>| <a href="http://sxxawef.com" target="_blank">亚洲精品久久久久久下一站</a>| <a href="http://66666556.com" target="_blank">亚洲国产日韩欧美在线动漫</a>| <a href="http://xiaofan123.com" target="_blank">精品9999</a>| <a href="http://zuan3344.com" target="_blank">在线播放豆国产99亚洲</a>| <a href="http://ssss96.com" target="_blank">激情综合久久</a>| <a href="http://baoyou118.com" target="_blank">在线精品视频一区二区</a>| <a href="http://wwwq4yy.com" target="_blank">亚洲福利在线视频</a>| <a href="http://a718sx.com" target="_blank">亚洲精品韩国</a>| <a href="http://gztcm01.com" target="_blank">日韩午夜激情av</a>| <a href="http://psykoptic.com" target="_blank">中文日韩在线</a>| <a href="http://tefahsop.com" target="_blank">亚洲欧美国产高清va在线播</a>| <a href="http://www4411n.com" target="_blank">亚洲天堂激情</a>| <a href="http://popowq.com" target="_blank">欧美伊人久久久久久午夜久久久久</a>| <a href="http://56718ca.com" target="_blank">亚洲欧美www</a>| <a href="http://www47067.com" target="_blank">销魂美女一区二区三区视频在线</a>| <a href="http://vvvv81.com" target="_blank">欧美在线免费一级片</a>| <a href="http://fangsling.com" target="_blank">久久黄色级2电影</a>| <a href="http://3bmmtv.com" target="_blank">久热精品视频在线免费观看</a>| <a href="http://y65k.com" target="_blank">欧美成人69av</a>| <a href="http://aabbcc11.com" target="_blank">亚洲人成毛片在线播放</a>| <a href="http://www333393.com" target="_blank">一本一本久久a久久精品综合麻豆</a>| <a href="http://tv-miya188.com" target="_blank">一区二区欧美精品</a>| <a href="http://dacellflex.com" target="_blank">欧美一进一出视频</a>| <a href="http://66688811.com" target="_blank">久久综合给合久久狠狠狠97色69</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>