锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
C++
涓紝綾葷殑浣跨敤鑰呭喅瀹氫簡(jiǎn)綾葷殑瀹炰緥鍐呭瓨浼?xì)濡備綍鍒嗛厤锛屽垎閰嶅湪鍫嗕笂杩樻槸鏍堜笂銆傛垜浠厛鐪嬩竴孌典緥瀛愮▼搴忥細(xì)
#include
"stdio.h"
class
Demo{
public
:
聽聽聽
int i;
聽聽聽
char* objName;
聽聽聽 Demo(){
聽聽聽聽聽聽聽 objName = "Default object.";
聽聽聽聽聽聽聽 printf("%s, objName = %s\r\n", "Enter Demo default ctor. method.", objName);
聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 i = 1000;
聽聽聽 }
聽聽聽 Demo(int ival, char* name){
聽聽聽聽聽聽聽 printf("%s,i = %d, objName = %s\r\n", "Enter Demo(int ival) ctor method", ival, name);
聽聽聽聽聽聽聽 i = ival;
聽聽聽聽聽聽聽 objName = name;
聽聽聽 }
聽聽聽 Demo(const Demo& d){
聽聽聽聽聽聽聽 printf("%s\r\n", "Enter Demo copy ctor method.");
聽聽聽聽聽聽聽 i = d.i;
聽聽聽聽聽聽聽 objName = "copied d";
聽聽聽 }
聽聽聽 ~Demo(){
聽聽聽聽聽聽聽 printf("%s, i = %d, objName = %s\r\n", "Enter Demo dector. method" , i, objName);
聽聽聽 }
};
Demo& testMethod0(){
聽聽聽 printf("%s\r\n", "Enter testMethod0.");
聽聽聽 Demo d(0, "d in testMethod0");
聽聽聽 printf("%s\r\n", "Exit testMethod0.");
聽聽聽
return d;
}
Demo testMethod1(){
聽聽聽 printf("%s\r\n", "Enter testMethod1.");
聽聽聽 Demo d(1, "d in testMethod1");
聽聽聽 printf("%s\r\n", "Exit testMethod1.");
聽聽聽
return d;
}
Demo* testMethod2(){
聽聽聽 printf("%s\r\n", "Enter testMethod2.");
聽聽聽 Demo *d = new Demo(2, "d in testMethod2");
聽聽聽 printf("%s\r\n", "Exit testMethod2.");
聽聽聽
return d;
}
int
main(int argc, _TCHAR* argv[])
{
聽聽聽 Demo d;
聽聽聽 d = testMethod1();
聽聽聽 Demo& d1 = testMethod0();
聽聽聽 Demo d2(999, "d1");
聽聽聽 Demo* d3 = testMethod2();
聽聽聽 printf("d.i = %d\r\n", d.i);
聽聽聽 printf("d1.i = %d\r\n", d1.i);
聽聽聽 printf("d2.i = %d\r\n", d2.i);
聽聽聽 printf("d3.i = %d\r\n", d3->i);
聽聽聽
delete d3;
聽聽聽
return 0;
}
Output
錛?/span>
Enter Demo default ctor. method., objName = Default object.
Enter testMethod1.
Enter Demo(int ival) ctor method,i = 1, objName = d in testMethod1
Exit testMethod1.
Enter Demo copy ctor method.
Enter Demo dector. method, i = 1, objName = d in testMethod1
Enter Demo dector. method, i = 1, objName = copied d
Enter testMethod0.
Enter Demo(int ival) ctor method,i = 0, objName = d in testMethod0
Exit testMethod0.
Enter Demo dector. method, i = 0, objName = d in testMethod0
Enter Demo(int ival) ctor method,i = 999, objName = d1
Enter testMethod2
Enter Demo(int ival) ctor method,i = 2, objName = d in testMethod2
Exit testMethod2.
d.i = 1
d1.i = -2
d2.i = 999
d3.i = 2
Enter Demo dector. method, i = 2, objName = d in testMethod2
Enter Demo dector. method, i = 999, objName = d1
Enter Demo dector. method, i = 1, objName = copied d
涓?/span>
C#
涓嶅悓錛屽湪
C++
涓紝瀵硅薄澹版槑鐨勬椂鍊欏氨宸茬粡鎵ц浜?jiǎn)鏋勯犲嚱鏁幫紝姣斿涓婇潰渚嬪瓙鐨?/span>
main
鍑芥暟涓殑絎竴琛岋紝
Demo d
錛屼粠灞忓箷涓婄殑杈撳嚭鏉ョ湅錛岃繖涓椂鍊?/span>
Demo class
鐨勯粯璁ゆ瀯閫犲嚱鏁頒細(xì)琚皟鐢ㄣ?/span>
鎺ヤ笅鏉ョ殑涓琛屼唬鐮佽皟鐢紝寮曞嚭浜?jiǎn)寰堟湁瓒g殑鎯呭喌锛屽綋鐒朵篃闅愯棌鐫涓嶅皬鐨勯棶棰樸傝繖琛屼唬鐮侀犳垚浜?jiǎn)涓嬈℃瀯閫犲嚱鏁拌皟鐢紝涓嬈℃嫹璐濇瀯閫犲嚱鏁拌皟鐢ㄥ拰涓ゆ鏋愭瀯鍑芥暟璋冪敤銆傝鎴戜滑鏉ュ叿浣撳垎鏋愪竴涓嬶細(xì)絎竴嬈¤皟鐢ㄦ瀯閫犲嚱鏁板緢瀹規(guī)槗鐞嗚В錛屽洜涓哄湪
testMethod1
涓垜浠0鏄庝簡(jiǎn)
Demo d(0)
錛岄鍑?/span>
testMethod1
錛屽嚱鏁扮殑榪斿洖鍊艱璧嬪肩粰鍙橀噺
d2
錛岃繖涓椂鍊欙紝
d2
琚嫹璐濇瀯閫犲嚱鏁伴噸鏂版瀯閫犱簡(jiǎn)涓嬈°傛帴鐫
testMethod1
涓瀯閫犵殑灞閮ㄥ彉閲忚鏋愭瀯錛岀劧鍚庯紝灞呯劧鎷瘋礉鏋勯犲嚱鏁版瀯閫犵殑瀵硅薄涔熻鏋愭瀯錛熺瓑絳夛紝鐪嬪畬鎵鏈夎緭鍑猴紝鎴戜滑鍙戠幇錛?/span>
objName = copied d
鐨勫璞¤鏋愭瀯涓ゆ錛岃?/span>
objName = Default obj
鐨勫璞¤鏋勯犲嚭涔嬪悗娌℃湁琚瀽鏋勶紝榪欓噷闅愯棌浜?jiǎn)寰堜弗閲嶇殑闂锛屾湁鍙兘瀵艰嚧鍐呭瓨娉勬紡銆佸彞鏌勪笉鑳借姝g‘鍏抽棴絳夌瓑銆傚彟澶栵紝鎷瘋礉鏋勯犲嚱鏁扮殑鎵ц鍙兘瀵艱嚧娼滃湪鐨勬晥鐜囬棶棰橈紝鑰冭檻涓涓寘鍚法澶х煩闃電殑瀵硅薄錛?/span>
copy
榪欎釜瀵硅薄浼?xì)鎬庝箞鏍鳳紵
鎺ヤ笅鏉ョ殑涓琛屼唬鐮侊紝
testMethod0
榪斿洖涓涓璞$殑寮曠敤錛屽綋鐒朵笉浼?xì)瀵艰嚧鎷疯礉鏋勯犲嚱鏁拌璋冪敤錛屼絾鏄紝榪欐牱涔熸槸鏈夐棶棰樼殑錛屽湪鍑芥暟涓0鏄庣殑灞閮ㄥ彉閲忓湪鍑芥暟鎵ц瀹屾垚鐨勬椂鍊欎細(xì)琚瀽鏋勶紝閭d箞鐩存帴榪斿洖灞閮ㄥ彉閲忓氨鍙兘浼?xì)鍑虹幇闂銆?/span>
testMethod0
閫鍑轟互鍚庯紝浠栧唴閮ㄧ殑
Demo
瀵硅薄灝變細(xì)鑷姩鏋愭瀯錛屽闈㈠瀹冪殑寮曠敤褰撶劧涔熸棤娉曟寚鍚戞紜殑瀵硅薄浜?jiǎn)锛屾墍浠ュ悗闈㈢▼搴忔墦鍗?/span>
d.i
鐨勬椂鍊欙紝杈撳嚭浜?jiǎn)涓涓帿鍚嶅叾濡欑殑
-2
銆?/span>
鏁堢巼鏈濂界殑鏂規(guī)硶褰撴暟榪斿洖鎸囬拡浜?jiǎn)锛屽畠涓嶄細(xì)瀵艰嚧瀵硅薄澶嶅堄灱屽鏋滀娇鐢ㄥ緱褰撳Q屼篃涓嶄細(xì)瀵艱嚧鍐呭瓨娉勬紡鎴栬呭彞鏌勬硠婕忋?/span>
testMethod2
婕旂ず浜?jiǎn)杩櫩U嶆儏鍐碉紝褰撶劧錛屼綘闇瑕佹墜宸ュ垹闄ゅ湪
testMethod2
涓垱寤虹殑瀵硅薄銆?/span>
涓嬮潰涓孌電畝鍗曠殑紼嬪簭錛屾紨紺轟簡(jiǎn)const鍙橀噺錛宑onst鎸囬拡鐨勫濡欏叧緋?/p>
聽
鏈綆鍗曟渶娓呮櫚鐨刢onst浣跨敤鏂規(guī)硶灝辨槸澹版槑const鍙橀噺浜?jiǎn)锛屽彉閲忛渶瑕佸湪鐢熷懡鐨勫湴鏂圭珛鍗沖垵濮嬪寲錛屽垵濮嬪寲瀹屾垚涔嬪悗灝變笉鑳藉啀鏀逛簡(jiǎn)銆?/p>
濡傛灉浣犵敤鍚屾牱鐨勬濊礬鏉ョ湅寰卌onst鎸囬拡錛屼綘浼?xì)鍙戠庮C綘閿欑殑寰堜弗閲嶏紝浣犵湅錛岃繖涓猚onstIntPoint鎹簡(jiǎn)鍑犱釜鐩爣渚濈劧鐢熼緳媧昏檸錛岀紪璇戝櫒寰堟剦蹇殑鎺ュ彈浜?jiǎn)杩檶D典唬鐮侊紝榪炰釜warn閮芥病鏈夈?br />鍘熸潵const鎸囬拡鏄寚鍚慶onst鍙橀噺鐨勬寚閽堬紝鑰屼笉鏄鎸囬拡鏈韓鏄痗onst鐨勩傛棤
ok錛宑onst鍙橀噺涓嶈兘鐩存帴淇敼錛岄毦閬撴垜鍙栧埌浠栫殑鍦板潃錛屽啀鏉ヤ慨鏀歸兘涓嶈涔堬紵涓嶈錛岀紪璇戝櫒浼?xì)鐩存帴鍛婅瘔浣犲Q屾棤娉曟妸涓涓猚onst鐨勬寚閽堣漿鎹㈡垚鏅氭寚閽堬紝
Error聽1聽error C2440: '=' : cannot convert from 'const int *__w64 ' to 'int *'聽
璁轟竴涓彉閲忓師鏉ユ槸鍚﹁澹版槑鎴恈onst錛屼綘鐢ㄤ竴涓猚onst鎸囬拡鎸囧悜瀹冿紝鐒跺悗浣跨敤*榪愮畻絎﹀彿鍙栧嚭榪欎釜鍙橀噺璇曞浘榪涜淇敼鐨勬搷浣滈兘鏄笉鍏佽鐨勶紝鍙傝冧唬鐮佷腑琚敞閲婃帀鐨凟rror2銆?br />
Error聽2聽error C3892: 'constIntPoint' : you cannot assign to a variable that is const聽