锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 瀵逛竴涓畝鍗曞彉閲忕殑鍒濆鍖栨柟娉曟槸鐢ㄤ竴涓父閲忔垨鍙橀噺鍒濆鍖栧彟涓涓彉閲忥紝渚嬪錛?br>
涔熻寰堝C++鐨勫垵瀛﹁呴兘鐭ラ亾浠涔堟槸鏋勯犲嚱鏁幫紝浣嗘槸瀵?span style="font-weight: bold;">澶嶅埗鏋勯犲嚱鏁?/span>錛坈opy constructor錛夊嵈榪樺緢闄岀敓銆傚浜庢垜鏉ヨ錛屽湪鍐欎唬鐮佺殑鏃跺欒兘鐢ㄥ緱涓婂鍒舵瀯閫犲嚱鏁扮殑鏈轟細騫朵笉澶氾紝涓嶈繃榪欏茍涓嶈鏄庡鍒舵瀯閫犲嚱鏁版病浠涔堢敤錛屽叾瀹炲鍒舵瀯閫犲嚱鏁拌兘瑙e喅涓浜涙垜浠父甯鎬細蹇界暐鐨勯棶棰樸?/font>
鍦–++涓紝涓嬮潰涓夌瀵硅薄闇瑕佹嫹璐濈殑鎯呭喌銆傚洜姝わ紝鎷瘋礉鏋勯犲嚱鏁板皢浼氳璋冪敤銆?
1)錛?涓涓璞′互鍊間紶閫掔殑鏂瑰紡浼犲叆鍑芥暟浣?
2)錛?涓涓璞′互鍊間紶閫掔殑鏂瑰紡浠庡嚱鏁拌繑鍥?
3)錛?涓涓璞¢渶瑕侀氳繃鍙﹀涓涓璞¤繘琛屽垵濮嬪寲
浠?
涓婄殑鎯呭喌闇瑕佹嫹璐濇瀯閫犲嚱鏁扮殑璋冪敤銆傚鏋滃湪鍓嶄袱縐嶆儏鍐典笉浣跨敤鎷瘋礉鏋勯犲嚱鏁扮殑鏃跺欙紝灝變細瀵艱嚧涓涓寚閽堟寚鍚戝凡緇忚鍒犻櫎鐨勫唴瀛樼┖闂淬?span style="color: red;">瀵逛簬絎笁縐嶆儏鍐墊潵璇達紝鍒濆鍖栧拰璧嬪肩殑涓嶅悓鍚箟鏄瀯閫犲嚱鏁拌皟鐢ㄧ殑鍘熷洜銆?/span>浜嬪疄涓婏紝鎷瘋礉鏋勯犲嚱鏁版槸鐢辨櫘閫氭瀯閫犲嚱鏁板拰璧嬪兼搷浣滅鍏卞悓瀹炵幇鐨勩傛弿榪版嫹璐濇瀯閫犲嚱鏁板拰璧嬪艱繍綆楃鐨勫紓鍚岀殑鍙傝冭祫鏂欐湁寰堝銆?
鎷瘋礉鏋勯犲嚱鏁頒笉鍙互鏀瑰彉瀹冩墍寮曠敤鐨勫璞?/span>錛屽叾鍘熷洜濡備笅錛氬綋涓涓璞′互浼犻掑肩殑鏂瑰紡浼犱竴涓嚱鏁扮殑鏃跺欙紝鎷瘋礉鏋勯犲嚱鏁拌嚜鍔ㄧ殑琚皟鐢ㄦ潵鐢熸垚鍑芥暟涓殑瀵硅薄銆傚鏋滀竴涓璞℃槸琚紶鍏ヨ嚜宸辯殑鎷瘋礉鏋勯犲嚱鏁幫紝瀹冪殑鎷瘋礉鏋勯犲嚱鏁板皢浼氳璋冪敤鏉ユ嫹璐濊繖涓璞¤繖鏍峰鍒舵墠鍙互浼犲叆瀹冭嚜宸辯殑鎷瘋礉鏋勯犲嚱鏁幫紝榪欎細瀵艱嚧鏃犻檺寰?
鐜?
闄や簡褰撳璞′紶鍏ュ嚱鏁扮殑鏃跺欒闅愬紡璋冪敤浠ュ錛屾嫹璐濇瀯閫犲嚱鏁板湪瀵硅薄琚嚱鏁拌繑鍥炵殑鏃跺欎篃鍚屾牱鐨勮璋冪敤銆傛崲鍙ヨ瘽璇達紝浣犱粠鍑芥暟榪斿洖寰楀埌鐨勫彧鏄璞$殑涓浠芥嫹璐濄備絾鏄悓鏍風殑錛屾嫹璐濇瀯閫犲嚱鏁拌姝g‘鐨勮皟鐢ㄤ簡錛屼綘涓嶅繀鎷呭績銆?
濡傛灉鍦ㄧ被涓病鏈夋樉寮忕殑澹版槑涓涓嫹璐濇瀯閫犲嚱鏁幫紝閭d箞錛岀紪璇戝櫒浼氱涓嬮噷涓轟綘鍒跺畾涓涓嚱鏁版潵榪涜瀵硅薄涔嬮棿鐨勪綅鎷瘋礉錛坆itwise
copy錛夈傝繖涓殣鍚殑鎷瘋礉鏋勯犲嚱鏁扮畝鍗曠殑鍏寵仈浜嗘墍鏈夌殑綾繪垚鍛樸傝澶氫綔鑰呴兘浼氭彁鍙婅繖涓粯璁ょ殑鎷瘋礉鏋勯犲嚱鏁般傛敞鎰忓埌榪欎釜闅愬紡鐨勬嫹璐濇瀯閫犲嚱鏁板拰鏄懼紡澹版槑鐨勬嫹璐濇瀯閫犲嚱鏁扮殑涓嶅悓鍦ㄤ簬瀵逛簬鎴愬憳鐨勫叧鑱旀柟寮忋傛樉寮忓0鏄庣殑鎷瘋礉鏋勯犲嚱鏁板叧鑱旂殑鍙槸琚疄渚嬪寲鐨勭被鎴愬憳鐨勭己鐪佹瀯閫犲嚱鏁伴櫎闈炲彟澶栦竴涓瀯閫犲嚱鏁板湪綾誨垵濮嬪寲鎴栬呭湪鏋勯犲垪琛ㄧ殑鏃跺欒璋冪敤銆?
鎷瘋礉鏋勯犲嚱鏁頒嬌紼嬪簭鏇村姞鏈夋晥鐜囷紝鍥犱負瀹冧笉鐢ㄥ啀鏋勯犱竴涓璞$殑鏃跺欐敼鍙樻瀯閫犲嚱鏁扮殑鍙傛暟鍒楄〃銆傝璁℃嫹璐濇瀯閫犲嚱鏁版槸涓涓壇濂界殑椋庢牸錛屽嵆浣挎槸緙栬瘧緋葷粺鎻愪緵鐨勫府鍔╀綘鐢寵鍐呭瓨榛樿鎷瘋礉鏋勯犲嚱鏁般備簨瀹炰笂錛岄粯璁ゆ嫹璐濇瀯閫犲嚱鏁板彲浠ュ簲浠樿澶氭儏鍐點?/font>
銆銆鎴戜滑宸茬粡浼氱敤鏋勯犲嚱鏁板垵濮嬪寲瀵硅薄錛岄偅涔堟垜浠兘涓嶈兘璞$畝鍗曞彉閲忕殑鍒濆鍖栦竴鏍鳳紝鐩存帴鐢ㄤ竴涓璞℃潵鍒濆鍖栧彟涓涓璞″憿錛熺瓟妗堟槸鑲畾鐨勩傛垜浠互鍓嶉潰瀹氫箟鐨凱oint綾諱負渚嬶細
Point pt2 = pt1;
鍚庝竴涓鍙ヤ篃鍙互鍐欐垚錛?br>
瀹?
鏄敤pt1鍒濆鍖杙t2錛屾鏃訛紝pt2鍚勪釜鎴愬憳鐨勫間笌pt1鍚勪釜鎴愬憳鐨勫肩浉鍚岋紝涔熷氨鏄錛宲t1鍚勪釜鎴愬憳鐨勫艱澶嶅埗鍒皃t2鐩稿簲鐨勬垚鍛樺綋涓傚湪榪欎釜鍒濆鍖?
榪囩▼褰撲腑錛屽疄闄呬笂璋冪敤浜嗕竴涓鍒舵瀯閫犲嚱鏁般傚綋鎴戜滑娌℃湁鏄懼紡瀹氫箟涓涓鍒舵瀯閫犲嚱鏁版椂錛岀紪璇戝櫒浼氶殣寮忓畾涔変竴涓己鐪佺殑澶嶅埗鏋勯犲嚱鏁幫紝瀹冩槸涓涓唴鑱旂殑銆佸叕鏈夌殑鎴?
鍛橈紝瀹冨叿鏈変笅闈㈢殑鍘熷瀷褰㈠紡錛?br>
鍙錛屽鍒舵瀯閫犲嚱鏁頒笌鏋勯犲嚱鏁扮殑涓嶅悓涔嬪鍦ㄤ簬褰㈠弬錛屽墠鑰呯殑褰㈠弬鏄疨oint瀵硅薄鐨勫紩鐢紝鍏跺姛鑳芥槸灝嗕竴涓璞$殑姣忎竴涓垚鍛樺鍒跺埌鍙︿竴涓璞″搴旂殑鎴愬憳褰撲腑銆?br>銆銆铏界劧娌℃湁蹇呰錛屾垜浠篃鍙互涓篜oint綾繪樉寮忓畾涔変竴涓鍒舵瀯閫犲嚱鏁幫細
{
銆銆xVal=pt. xVal;
銆銆yVal=pt. yVal;
}
濡傛灉涓涓被涓湁鎸囬拡鎴愬憳錛屼嬌鐢ㄧ己鐪佺殑澶嶅埗鏋勯犲嚱鏁板垵濮嬪寲瀵硅薄灝變細鍑虹幇闂銆備負浜嗚鏄庡瓨鍦ㄧ殑闂錛屾垜浠亣瀹氬璞涓庡璞鏄浉鍚岀殑綾伙紝鏈変竴涓寚閽堟垚鍛橈紝鎸?
鍚戝璞銆傚綋鐢ㄥ璞鍒濆鍖栧璞鏃訛紝緙虹渷鐨勫鍒舵瀯閫犲嚱鏁板皢B涓瘡涓涓垚鍛樼殑鍊煎鍒跺埌A鐨勫搴旂殑鎴愬憳褰撲腑錛屼絾騫舵病鏈夊鍒跺璞銆備篃灝辨槸璇達紝瀵硅薄A鍜屽璞
涓殑鎸囬拡鎴愬憳鍧囨寚鍚戝璞錛屽疄闄呬笂錛屾垜浠笇鏈涘璞涔熻澶嶅埗錛屽緱鍒癈鐨勫璞″壇鏈珼銆傚惁鍒欙紝褰撳璞鍜孊閿姣佹椂錛屼細瀵瑰璞鐨勫唴瀛樺尯閲嶅閲婃斁錛岃屽鑷撮敊璇?
涓轟簡浣垮璞涔熻澶嶅埗錛屽氨蹇呴』鏄懼紡瀹氫箟澶嶅埗鏋勯犲嚱鏁般備笅闈㈡垜浠互string綾諱負渚嬭鏄庯紝濡備綍瀹氫箟榪欎釜澶嶅埗鏋勯犲嚱鏁般?
![]() |
|
渚嬮 |
渚?0-11 |
1 class String
2 { 3 銆public: 4 銆銆String(); //鏋勯犲嚱鏁?/span> 5 銆銆String(const String &s); //澶嶅埗鏋勯犲嚱鏁?/span> 6 銆銆~String(); //鏋愭瀯鍑芥暟 7 8 銆銆// 鎺ュ彛鍑芥暟 9 銆銆void set(char const *data); 10 銆銆char const *get(void); 11 12 銆private: 13 銆銆char *str; //鏁版嵁鎴愬憳ptr鎸囧悜鍒嗛厤鐨勫瓧絎︿覆 14 }; 15 String ::String(const String &s) 16 { 17 銆str = new char[strlen(s.str) + 1]; 18 銆strcpy(str, s.str); 19 } |
|
![]() |
鎴戜滑涔熷父鐢ㄦ棤鍚嶅璞″垵濮嬪寲鍙︿竴涓璞★紝渚嬪錛?br>
緙虹渷鐨勫鍒舵瀯閫犲嚱鏁?br>銆銆鍦ㄧ被鐨勫畾涔変腑錛屽鏋滄病鏈夋樉寮忓畾涔夊鍒舵瀯閫犲嚱鏁幫紝C++緙栬瘧鍣ㄤ細鑷姩鍦板畾涔変竴涓己鐪佺殑澶嶅埗鏋勯犲嚱鏁般備笅闈㈡槸浣跨敤澶嶅埗鏋勯犲嚱鏁扮殑涓涓緥瀛愶細
![]() |
|
渚嬮 |
渚?0-12 |
1 #include <iostream.h>
2 #include <string.h> 3 class withCC 4 { 5 銆public: 6 銆withCC(){} 7 銆withCC(const withCC&) 8 銆{ 9 銆銆cout<<"withCC(withCC&)"<<endl; 10 銆} 11 }; 12 13 class woCC 14 { 15 銆enum{bsz = 100}; 16 銆char buf[bsz]; 17 public: 18 銆woCC(const char* msg = 0) 19 銆{ 20 銆銆memset(buf, 0, bsz); 21 銆銆if(msg) strncpy(buf, msg, bsz); 22 銆} 23 銆void print(const char* msg = 0)const 24 銆{ 25 銆銆if(msg) cout<<msg<<":"; 26 銆銆cout<<buf<<endl; 27 銆} 28 }; 29 30 class composite 31 { 32 銆withCC WITHCC; 33 銆woCC WOCC; 34 public: 35 銆composite() : WOCC("composite()"){} 36 銆void print(const char* msg = 0) 37 銆{ 38 銆銆WOCC.print(msg); 39 銆} 40 }; 41 42 void main() 43 { 44 銆composite c; 45 銆c.print("contents of c"); 46 銆cout<<"calling composite copy-constructor"<<endl; 47 銆composite c2 = c; 48 銆c2.print("contents of c2"); 49 } |
|
![]() |