锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
C++
涓紝綾葷殑浣跨敤鑰呭喅瀹氫簡綾葷殑瀹炰緥鍐呭瓨浼氬浣曞垎閰嶏紝鍒嗛厤鍦ㄥ爢涓婅繕鏄爤涓娿傛垜浠厛鐪嬩竴孌典緥瀛愮▼搴忥細
#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++
涓紝瀵硅薄澹版槑鐨勬椂鍊欏氨宸茬粡鎵ц浜嗘瀯閫犲嚱鏁幫紝姣斿涓婇潰渚嬪瓙鐨?/span>
main
鍑芥暟涓殑絎竴琛岋紝
Demo d
錛屼粠灞忓箷涓婄殑杈撳嚭鏉ョ湅錛岃繖涓椂鍊?/span>
Demo class
鐨勯粯璁ゆ瀯閫犲嚱鏁頒細琚皟鐢ㄣ?/span>
鎺ヤ笅鏉ョ殑涓琛屼唬鐮佽皟鐢紝寮曞嚭浜嗗緢鏈夎叮鐨勬儏鍐碉紝褰撶劧涔熼殣钘忕潃涓嶅皬鐨勯棶棰樸傝繖琛屼唬鐮侀犳垚浜嗕竴嬈℃瀯閫犲嚱鏁拌皟鐢紝涓嬈℃嫹璐濇瀯閫犲嚱鏁拌皟鐢ㄥ拰涓ゆ鏋愭瀯鍑芥暟璋冪敤銆傝鎴戜滑鏉ュ叿浣撳垎鏋愪竴涓嬶細絎竴嬈¤皟鐢ㄦ瀯閫犲嚱鏁板緢瀹規槗鐞嗚В錛屽洜涓哄湪
testMethod1
涓垜浠0鏄庝簡
Demo d(0)
錛岄鍑?/span>
testMethod1
錛屽嚱鏁扮殑榪斿洖鍊艱璧嬪肩粰鍙橀噺
d2
錛岃繖涓椂鍊欙紝
d2
琚嫹璐濇瀯閫犲嚱鏁伴噸鏂版瀯閫犱簡涓嬈°傛帴鐫
testMethod1
涓瀯閫犵殑灞閮ㄥ彉閲忚鏋愭瀯錛岀劧鍚庯紝灞呯劧鎷瘋礉鏋勯犲嚱鏁版瀯閫犵殑瀵硅薄涔熻鏋愭瀯錛熺瓑絳夛紝鐪嬪畬鎵鏈夎緭鍑猴紝鎴戜滑鍙戠幇錛?/span>
objName = copied d
鐨勫璞¤鏋愭瀯涓ゆ錛岃?/span>
objName = Default obj
鐨勫璞¤鏋勯犲嚭涔嬪悗娌℃湁琚瀽鏋勶紝榪欓噷闅愯棌浜嗗緢涓ラ噸鐨勯棶棰橈紝鏈夊彲鑳藉鑷村唴瀛樻硠婕忋佸彞鏌勪笉鑳借姝g‘鍏抽棴絳夌瓑銆傚彟澶栵紝鎷瘋礉鏋勯犲嚱鏁扮殑鎵ц鍙兘瀵艱嚧娼滃湪鐨勬晥鐜囬棶棰橈紝鑰冭檻涓涓寘鍚法澶х煩闃電殑瀵硅薄錛?/span>
copy
榪欎釜瀵硅薄浼氭庝箞鏍鳳紵
鎺ヤ笅鏉ョ殑涓琛屼唬鐮侊紝
testMethod0
榪斿洖涓涓璞$殑寮曠敤錛屽綋鐒朵笉浼氬鑷存嫹璐濇瀯閫犲嚱鏁拌璋冪敤錛屼絾鏄紝榪欐牱涔熸槸鏈夐棶棰樼殑錛屽湪鍑芥暟涓0鏄庣殑灞閮ㄥ彉閲忓湪鍑芥暟鎵ц瀹屾垚鐨勬椂鍊欎細琚瀽鏋勶紝閭d箞鐩存帴榪斿洖灞閮ㄥ彉閲忓氨鍙兘浼氬嚭鐜伴棶棰樸?/span>
testMethod0
閫鍑轟互鍚庯紝浠栧唴閮ㄧ殑
Demo
瀵硅薄灝變細鑷姩鏋愭瀯錛屽闈㈠瀹冪殑寮曠敤褰撶劧涔熸棤娉曟寚鍚戞紜殑瀵硅薄浜嗭紝鎵浠ュ悗闈㈢▼搴忔墦鍗?/span>
d.i
鐨勬椂鍊欙紝杈撳嚭浜嗕竴涓帿鍚嶅叾濡欑殑
-2
銆?/span>
鏁堢巼鏈濂界殑鏂規硶褰撴暟榪斿洖鎸囬拡浜嗭紝瀹冧笉浼氬鑷村璞″鍒訛紝濡傛灉浣跨敤寰楀綋錛屼篃涓嶄細瀵艱嚧鍐呭瓨娉勬紡鎴栬呭彞鏌勬硠婕忋?/span>
testMethod2
婕旂ず浜嗚繖縐嶆儏鍐碉紝褰撶劧錛屼綘闇瑕佹墜宸ュ垹闄ゅ湪
testMethod2
涓垱寤虹殑瀵硅薄銆?/span>
涓嬮潰涓孌電畝鍗曠殑紼嬪簭錛屾紨紺轟簡const鍙橀噺錛宑onst鎸囬拡鐨勫濡欏叧緋?/p>
聽
鏈綆鍗曟渶娓呮櫚鐨刢onst浣跨敤鏂規硶灝辨槸澹版槑const鍙橀噺浜嗭紝鍙橀噺闇瑕佸湪鐢熷懡鐨勫湴鏂圭珛鍗沖垵濮嬪寲錛屽垵濮嬪寲瀹屾垚涔嬪悗灝變笉鑳藉啀鏀逛簡銆?/p>
濡傛灉浣犵敤鍚屾牱鐨勬濊礬鏉ョ湅寰卌onst鎸囬拡錛屼綘浼氬彂鐜頒綘閿欑殑寰堜弗閲嶏紝浣犵湅錛岃繖涓猚onstIntPoint鎹簡鍑犱釜鐩爣渚濈劧鐢熼緳媧昏檸錛岀紪璇戝櫒寰堟剦蹇殑鎺ュ彈浜嗚繖孌典唬鐮侊紝榪炰釜warn閮芥病鏈夈?br />鍘熸潵const鎸囬拡鏄寚鍚慶onst鍙橀噺鐨勬寚閽堬紝鑰屼笉鏄鎸囬拡鏈韓鏄痗onst鐨勩傛棤
ok錛宑onst鍙橀噺涓嶈兘鐩存帴淇敼錛岄毦閬撴垜鍙栧埌浠栫殑鍦板潃錛屽啀鏉ヤ慨鏀歸兘涓嶈涔堬紵涓嶈錛岀紪璇戝櫒浼氱洿鎺ュ憡璇変綘錛屾棤娉曟妸涓涓猚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聽