导航:首页 > 程序命令 > 程序员构造函数详解

程序员构造函数详解

发布时间:2024-06-27 18:52:56

A. C璇瑷閲岄溃鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟镄勮繍鐢ㄥ姙娉

銆銆鎽 瑕侊细鏋勯犲嚱鏁颁笌鏋愭瀯鍑芥暟鏄涓涓绫讳腑鐪嬩技杈冧负绠鍗旷殑涓ょ被鍑芥暟锛屼絾鍦ㄥ疄闄呰繍鐢ㄨ繃绋嬩腑镐讳细鍑虹幇涓浜涙剰𨱍充笉鍒扮殑杩愯岄敊璇銆傛湰鏂囧皢杈幂郴缁熺殑浠嬬粛鏋勯犲嚱鏁颁笌鏋愭瀯鍑芥暟镄勫师鐞嗗强鍦–#涓镄勮繍鐢锛屼互鍙婂湪浣跨敤杩囩▼涓闇瑕佹敞镒忕殑鑻ュ共浜嬮”銆

銆銆鍏抽敭瀛楋细鏋勯犲嚱鏁帮绂鏋愭瀯鍑芥暟锛涘瀮鍦惧洖鏀跺櫒锛涢潪镓樼¤祫婧愶绂镓樼¤祫婧

銆銆 涓锛庢瀯阃犲嚱鏁颁笌鏋愭瀯鍑芥暟镄勫师鐞

銆銆浣滀负姣擟镟村厛杩涚殑璇瑷锛孋#鎻愪緵浜嗘洿濂界殑链哄埗𨱒ュ炲己绋嫔簭镄勫畨鍏ㄦс侰#缂栬疟鍣ㄥ叿链変弗镙肩殑绫诲瀷瀹夊叏妫镆ュ姛鑳斤纴瀹冨嚑涔庤兘镓惧嚭绋嫔簭涓镓链夌殑璇娉曢梾棰桡纴杩欑殑纭甯浜嗙▼搴忓憳镄勫ぇ蹇欍备絾鏄绋嫔簭阃氲繃浜嗙紪璇戞镆ュ苟涓嶈〃绀洪敊璇宸茬粡涓嶅瓨鍦ㄤ简锛屽湪钬滈敊璇钬濈殑澶у跺涵閲岋纴钬滆娉曢敊璇钬濈殑鍦颁綅鍙鑳界畻鏄鍐板北涓瑙掋傜骇鍒楂樼殑阌栾阃氩父闅愯棌寰楀緢娣憋纴涓嶅规槗鍙戠幇銆

銆銆镙规嵁缁忛獙锛屼笉灏戦毦浠ュ疗瑙夌殑绋嫔簭阌栾鏄鐢变簬鍙橀噺娌℃湁琚姝g‘鍒濆嫔寲鎴栨竻闄ら犳垚镄勶纴钥屽埯濮嫔寲鍜屾竻闄ゅ伐浣滃緢瀹规槗琚浜洪仐蹇樸傚井杞鍒╃敤闱㈠悜瀵硅薄镄勬傚康鍦ㄨ捐C#璇瑷镞跺厖鍒呜冭槛浜呜繖涓闂棰桦苟寰埚ソ鍦颁篑浠ヨВ鍐筹细鎶婂硅薄镄勫埯濮嫔寲宸ヤ綔鏀惧湪鏋勯犲嚱鏁颁腑锛屾妸娓呴櫎宸ヤ綔鏀惧湪鏋愭瀯鍑芥暟涓銆傚綋瀵硅薄琚鍒涘缓镞讹纴鏋勯犲嚱鏁拌镊锷ㄦ墽琛屻傚綋瀵硅薄娑堜骸镞讹纴鏋愭瀯鍑芥暟琚镊锷ㄦ墽琛屻傝繖镙峰氨涓岖敤𨰾呭绩蹇樿板硅薄镄勫埯濮嫔寲鍜屾竻闄ゅ伐浣溿

銆銆 浜岋紟鏋勯犲嚱鏁板湪C#涓镄勮繍鐢

銆銆鏋勯犲嚱鏁扮殑钖嶅瓧涓嶈兘闅忎究璧凤纴蹇呴’璁╃紪璇戝櫒璁ゅ缑鍑烘墠鍙浠ヨ镊锷ㄦ墽琛屻傚畠镄勫懡钖嶆柟娉曟棦绠鍗曞张钖堢悊锛氲╂瀯阃犲嚱鏁颁笌绫诲悓钖嶃傞櫎浜嗗悕瀛楀栵纴鏋勯犲嚱鏁扮殑鍙︿竴涓鐗瑰埆涔嫔勬槸娌℃湁杩斿洖鍊肩被鍨嬶纴杩欎笌杩斿洖鍊肩被鍨嬩负void镄勫嚱鏁颁笉钖屻傚傛灉瀹冩湁杩斿洖鍊肩被鍨嬶纴闾d箞缂栬疟鍣ㄥ皢涓岖煡镓鎺銆傚湪浣犲彲浠ヨ块梾涓涓绫荤殑鏂规硶銆佸睘镐ф垨浠讳綍鍏跺畠涓滆タ涔嫔墠锛 绗涓𨱒℃墽琛岀殑璇鍙ユ槸鍖呭惈链夌浉搴旂被镄勬瀯阃犲嚱鏁般傜敋镊充綘镊宸变笉鍐欎竴涓鏋勯犲嚱鏁帮纴涔熶细链変竴涓缂虹渷鏋勯犲嚱鏁版彁渚涚粰浣犮

銆銆class TestClass

銆銆{

銆銆public TestClass(): base() {} // 鐢盋LR鎻愪緵

銆銆}

銆銆涓嬮溃鍒椾妇浜嗗嚑绉岖被鍨嬬殑鏋勯犲嚱鏁

銆銆1锛夌己鐪佹瀯阃犲嚱鏁

銆銆class TestClass

銆銆{

銆銆public TestClass(): base() {}

銆銆}

銆銆涓婇溃宸蹭粙缁嶏纴瀹幂敱绯荤粺锛圕LR锛夋彁渚涖

銆銆2锛夊疄渚嬫瀯阃犲嚱鏁

銆銆瀹炰緥鏋勯犲嚱鏁版槸瀹炵幇瀵圭被涓瀹炰緥杩涜屽埯濮嫔寲镄勬柟娉曟垚锻樸傚傦细

銆銆using System;

銆銆class Point

銆銆{

銆銆public double x, y;

銆銆public Point()

銆銆{

銆銆this.x = 0;

銆銆this.y = 0;

銆銆}

銆銆public Point(double x, double y)

銆銆{

銆銆this.x = x;

銆銆this.y = y;

銆銆}

銆銆}

銆銆class Test

銆銆{

銆銆static void Main()

銆銆{

銆銆Point a = new Point();

銆銆Point b = new Point(3, 4); // 鐢ㄦ瀯阃犲嚱鏁板埯濮嫔寲瀵硅薄

銆銆}

銆銆}

銆銆澹版槑浜嗕竴涓绫籔oint锛屽畠鎻愪緵浜嗕袱涓鏋勯犲嚱鏁般傚畠浠鏄閲嶈浇镄勚备竴涓鏄娌℃湁鍙傛暟镄凯oint鏋勯犲嚱鏁板拰涓涓鏄链変袱涓猟ouble鍙傛暟镄凯oint鏋勯犲嚱鏁般傚傛灉绫讳腑娌℃湁鎻愪緵杩欎簺鏋勯犲嚱鏁帮纴闾d箞浼欳LR浼氲嚜锷ㄦ彁渚涗竴涓缂虹渷鏋勯犲嚱鏁扮殑銆备絾涓镞︾被涓鎻愪緵浜呜嚜瀹氢箟镄勬瀯阃犲嚱鏁帮纴濡侾oint()鍜孭oint(double x, double y)锛屽垯缂虹渷鏋勯犲嚱鏁板皢涓崭细琚鎻愪緵锛岃繖涓镣硅佹敞镒忋

銆銆3锛 闱欐佹瀯阃犲嚱鏁

銆銆闱欐佹瀯阃犲嚱鏁版槸瀹炵幇瀵逛竴涓绫昏繘琛屽埯濮嫔寲镄勬柟娉曟垚锻樸傚畠涓鑸鐢ㄤ簬瀵归润镐佹暟鎹镄勫埯濮嫔寲銆傞润镐佹瀯阃犲嚱鏁颁笉鑳芥湁鍙傛暟锛屼笉鑳芥湁淇楗扮﹁屼笖涓嶈兘琚璋幂敤锛屽綋绫昏锷犺浇镞讹纴绫荤殑闱欐佹瀯阃犲嚱鏁拌嚜锷ㄨ璋幂敤銆傚傦细

銆銆using System.Data;

銆銆class Employee

銆銆{

銆銆private static DataSet ds;

銆銆static Employee()

銆銆{

銆銆ds = new DataSet(...);

銆銆}

銆銆}

銆銆澹版槑浜嗕竴涓链夐润镐佹瀯阃犲嚱鏁扮殑绫籈mployee銆傛敞镒忛润镐佹瀯阃犲嚱鏁板彧鑳藉归润镐佹暟鎹鎴愬憳杩涜屽埯濮嫔寲锛岃屼笉鑳藉归潪闱欐佹暟鎹鎴愬憳杩涜屽埯濮嫔寲銆备絾鏄锛岄潪闱欐佹瀯阃犲嚱鏁版棦鍙浠ュ归润镐佹暟鎹鎴愬憳璧嫔硷纴涔熷彲浠ュ归潪闱欐佹暟鎹鎴愬憳杩涜屽埯濮嫔寲銆

銆銆濡傛灉绫讳粎鍖呭惈闱欐佹垚锻桡纴浣犲彲浠ュ垱寤轰竴涓猵rivate镄勬瀯阃犲嚱鏁帮细private TestClass() {钬}锛屼絾鏄痯rivate镒忓懗镌浠庣被镄勫栭溃涓嶅彲鑳借块梾璇ユ瀯阃犲嚱鏁般傛墍浠ワ纴瀹冧笉鑳借璋幂敤锛屼笖娌℃湁瀵硅薄鍙浠ヨ璇ョ被瀹氢箟瀹炰緥鍖栥

銆銆浠ヤ笂鏄鍑犵岖被鍨嬫瀯阃犲嚱鏁扮殑绠鍗曡繍鐢锛屼笅闱㈠皢閲岖偣浠嬬粛涓涓嫔湪绫荤殑灞傛$粨鏋勪腑锛埚嵆缁ф圹缁撴瀯涓锛夊熀绫诲拰娲剧敓绫荤殑鏋勯犲嚱鏁扮殑浣跨敤鏂瑰纺銆傛淳鐢熺被瀵硅薄镄勫埯濮嫔寲鐢卞熀绫诲拰娲剧敓绫诲叡钖屽畬鎴愶细锘虹被镄勬垚锻樼敱锘虹被镄勬瀯阃犲嚱鏁板埯濮嫔寲锛屾淳鐢熺被镄勬垚锻樼敱娲剧敓绫荤殑鏋勯犲嚱鏁板埯濮嫔寲銆

銆銆褰揿垱寤烘淳鐢熺被镄勫硅薄镞讹纴绯荤粺灏嗕细璋幂敤锘虹被镄勬瀯阃犲嚱鏁板拰娲剧敓绫荤殑鏋勯犲嚱鏁帮纴鏋 阃犲嚱鏁扮殑镓ц屾″簭鏄锛氩厛镓ц屽熀绫荤殑鏋勯犲嚱鏁帮纴鍐嶆墽琛屾淳鐢熺被镄勬瀯阃犲嚱鏁般傚傛灉娲剧敓绫诲张链夊硅薄鎴愬憳锛屽垯锛屽厛镓ц屽熀绫荤殑鏋勯犲嚱鏁帮纴鍐嶆墽琛屾垚锻桦硅薄绫荤殑鏋勯犲嚱鏁帮纴链钖庢墽琛屾淳鐢熺被镄勬瀯阃犲嚱鏁般

銆銆镊充簬镓ц屽熀绫荤殑浠涔堟瀯阃犲嚱鏁帮纴缂虹渷𨱍呭喌涓嬫槸镓ц屽熀绫荤殑镞犲弬鏋勯犲嚱鏁帮纴濡傛灉瑕佹墽琛屽熀绫荤殑链夊弬鏋勯犲嚱鏁帮纴鍒椤繀椤诲湪娲剧敓绫绘瀯阃犲嚱鏁扮殑鎴愬憳鍒濆嫔寲琛ㄤ腑鎸囧嚭銆傚傦细

銆銆class A

銆銆{ private int x;

銆銆public A( ) { x = 0; }

銆銆public A( int i ) { x = i; }

銆銆};

銆銆class B : A

銆銆{ private int y;

銆銆public B( ) { y = 0; }

銆銆public B( int i ) { y = i; }

銆銆public B( int i, int j ):A(i) { y = j; }

銆銆};

銆銆B b1 = new B(); //镓ц屽熀绫籄镄勬瀯阃犲嚱鏁痨()锛屽啀镓ц屾淳鐢熺被镄勬瀯阃犲嚱鏁痫()

銆銆B b2 = new B(1); //镓ц屽熀绫籄镄勬瀯阃犲嚱鏁痨()锛屽啀镓ц屾淳鐢熺被镄勬瀯阃犲嚱鏁痫(int)

銆銆B b3 = new B(0,1); //镓ц屾墽琛屽熀绫籄镄勬瀯阃犲嚱鏁痨(int) 锛屽啀镓ц屾淳鐢熺被镄

銆銆鏋勯犲嚱鏁痫(int,int)

銆銆鍦ㄨ繖閲屾瀯阃犲嚱鏁扮殑镓ц屾″簭鏄涓瀹氲佸垎鏋愭竻妤氱殑銆傚彟澶栵纴濡傛灉锘虹被A涓娌℃湁鎻愪緵镞犲弬鏋勯犲嚱鏁皃ublic A( ) { x = 0; }锛屽垯鍦ㄦ淳鐢熺被镄勬墍链夋瀯阃犲嚱鏁版垚锻桦埯濮嫔寲琛ㄤ腑蹇呴’鎸囧嚭锘虹被A镄勬湁鍙傛瀯阃犲嚱鏁痨(i)锛屽备笅镓绀猴细

銆銆class A

銆銆{ private int x;

銆銆public A( int i ) { x = i; }

銆銆};

銆銆class B : A

銆銆{ private int y;

銆銆public B():A(i) { y = 0; }

銆銆public B(int i):A(i) { y = i; }

銆銆public B(int i, int j):A(i) { y = j; }

銆銆};

銆銆 涓夛紟鏋愭瀯鍑芥暟鍜屽瀮鍦惧洖鏀跺櫒鍦–#涓镄勮繍鐢

銆銆鏋愭瀯鍑芥暟鏄瀹炵幇阌姣佷竴涓绫荤殑瀹炰緥镄勬柟娉曟垚锻樸傛瀽鏋勫嚱鏁颁笉鑳芥湁鍙傛暟锛屼笉鑳戒换浣曚慨楗扮﹁屼笖涓嶈兘琚璋幂敤銆傜敱浜庢瀽鏋勫嚱鏁扮殑鐩镄勪笌鏋勯犲嚱鏁扮殑鐩稿弽锛屽氨锷犲墠缂钬榽钬欎互绀哄尯鍒銆

銆銆铏界劧C#锛堟洿纭鍒囩殑璇存槸CLR锛夋彁渚涗简涓绉嶆柊镄勫唴瀛樼$悊链哄埗---镊锷ㄥ唴瀛樼$悊链哄埗锛圆utomatic memory management锛夛纴璧勬簮镄勯喷鏀炬槸鍙浠ラ氲繃钬滃瀮鍦惧洖鏀跺櫒钬 镊锷ㄥ畬鎴愮殑锛屼竴鑸涓嶉渶瑕佺敤鎴峰共棰勶纴浣嗗湪链変簺鐗规畩𨱍呭喌涓嬭缮鏄闇瑕佺敤鍒版瀽鏋勫嚱鏁扮殑锛屽傚湪C#涓闱炴墭绠¤祫婧愮殑閲婃斁銆

銆銆璧勬簮镄.閲婃斁涓鑸鏄阃氲繃"鍨冨溇锲炴敹鍣"镊锷ㄥ畬鎴愮殑,浣嗗叿浣撴潵璇,浠嶆湁浜涢渶瑕佹敞镒忕殑鍦版柟锛

銆銆1. 鍊肩被鍨嫔拰寮旷敤绫诲瀷镄勫紩鐢ㄥ叾瀹炴槸涓嶉渶瑕佷粈涔"鍨冨溇锲炴敹鍣"𨱒ラ喷鏀惧唴瀛樼殑,锲犱负褰揿畠浠鍑轰简浣灭敤锘熷悗浼氲嚜锷ㄩ喷鏀炬墍鍗犲唴瀛桡纴锲犱负瀹冧滑閮戒缭瀛桦湪镙(Stack)涓;

銆銆2. 鍙链夊紩鐢ㄧ被鍨嬬殑寮旷敤镓鎸囧悜镄勫硅薄瀹炰緥镓崭缭瀛桦湪鍫(Heap)涓,钥屽爢锲犱负鏄涓涓镊鐢卞瓨鍌ㄧ┖闂,镓浠ュ畠骞舵病链夊儚"镙"闾f牱链夌敓瀛樻湡("镙"镄勫厓绱犲脊鍑哄悗灏变唬琛ㄧ敓瀛樻湡缁撴潫,涔熷氨浠h〃閲婃斁浜嗗唴瀛),骞朵笖瑕佹敞镒忕殑鏄,"鍨冨溇锲炴敹鍣"鍙瀵硅繖鍧楀尯锘熻捣浣灭敤;

銆銆铹惰,链変簺𨱍呭喌涓嬶纴褰挞渶瑕侀喷鏀鹃潪镓樼¤祫婧愭椂,灏卞繀椤婚氲繃鍐欎唬镰佺殑鏂瑰纺𨱒ヨВ鍐炽傞氩父鏄浣跨敤鏋愭瀯鍑芥暟閲婃斁闱炴墭绠¤祫婧愶纴灏嗙敤鎴疯嚜宸辩紪鍐欑殑閲婃斁闱炴墭绠¤祫婧愮殑浠g爜娈垫斁鍦ㄦ瀽鏋勫嚱鏁颁腑鍗冲彲銆傞渶瑕佹敞镒忕殑鏄,濡傛灉涓涓绫讳腑娌℃湁浣跨敤鍒伴潪镓樼¤祫婧,闾d箞涓瀹氢笉瑕佸畾涔夋瀽鏋勫嚱鏁,杩欐槸锲犱负瀵硅薄镓ц屼简鏋愭瀯鍑芥暟,闾d箞"鍨冨溇锲炴敹鍣"鍦ㄩ喷鏀炬墭绠¤祫婧愪箣鍓嶈佸厛璋幂敤鏋愭瀯鍑芥暟锛岀劧钖庣浜屾℃墠鐪熸i喷鏀炬墭绠¤祫婧愶纴杩欐牱涓𨱒ワ纴涓ゆ″垹闄ゅ姩浣灭殑鑺遍攒姣斾竴娆″ぇ澶氱殑銆备笅闱浣跨敤涓娈典唬镰佹潵绀烘瀽鏋勫嚱鏁版槸濡备綍浣跨敤镄勶细

銆銆public class ResourceHolder

銆銆{

銆銆~ResourceHolder()

銆銆{

銆銆// 杩欓噷鏄娓呯悊闱炴墭绠¤祫婧愮殑鐢ㄦ埛浠g爜娈

銆銆}

銆銆}

銆銆 锲涳紟灏忕粨

銆銆鏋勯犲嚱鏁颁笌鏋愭瀯鍑芥暟铏界劧鏄涓涓绫讳腑褰㈠纺涓婅缉绠鍗旷殑鍑芥暟锛屼絾瀹冧滑镄勪娇鐢ㄥ喅闱炵湅涓婂幓闾d箞绠鍗曪纴锲犳ょ伒娲昏屾g‘镄勪娇鐢ㄦ瀯阃犲嚱鏁颁笌鏋愭瀯鍑芥暟鑳藉熷府浣犳洿濂界殑鐞呜ВCLR镄勫唴瀛樼$悊链哄埗锛屼互鍙婃洿濂界殑绠$悊绯荤粺涓镄勮祫婧愩

B. 构造函数的有参和无参的区别,构造函数的参数是派什么用场的

区别:

1.如果在创建对象时不写参数,调用的就是无参的构造方法。可是如果你写的有有参的构造方法,而没有无参的构造方法,那么再“创建对象时不写参数”就会报错,程序会认为你知道该怎么做。

如果构造方法有参数,在创建对象时传入了参数,那么就会调用此方法,这一点和重载类似。

2.没有参数的构造函数就是默认构造函数。

有参数的构造函数可用传递的参数给类中的属性赋初始值或执行初始化操作例如订阅事件等。

构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。

任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。

如果没有为对象提供构造函数,则默认情况下 C# 将创建一个构造函数,该构造函数实例化对象,并将所有成员变量设置系统指定的默认值。静态类和结构也可以有构造函数。

(2)程序员构造函数详解扩展阅读

主要特点

1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;

2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;

3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;

4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;

5.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)

6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。

C. 常见的构造函数类型

构造函数类型分为四种、无参数构造函数、有参数构造函数、拷贝构造函数、默认构造函数。
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

D. 姹侰++涓鏋勯犲嚱鏁扮殑缁忓吀渚嬮.

銆愪竴銆戙佹瀯阃犲嚱鏁
鍦ㄥ畾涔夌被镄勫硅薄镄勬椂鍊欑郴缁熻嚜锷ㄨ皟鐢ㄦ瀯阃犲嚱鏁般傛瀯阃犲嚱鏁板彲浠ョ▼搴忓憳
鏄惧纺镄勮存槑锛屼篃鍙浠ヤ笉鍐欙纴绯荤粺榛樿ょ粰浣犳彁渚涗竴涓鏋勯犲嚱鏁般

1.褰撹佸湪瀹氢箟绫荤殑瀵硅薄镞剁粰瀵硅薄璧嫔埯鍊兼椂锛屽繀椤昏嚜宸卞啓鏋勯犲嚱鏁帮纴濡傦细
#include<iostream.h>

class student
{
public:
student(int num) //鏋勯犲嚱鏁
{
stunum = num; //璧嫔
cout<<"鐢ㄦ埛鍐欑殑鏋勯犲嚱鏁拌璋幂敤"<<endl;
}
private:
int stunum;
};

void main()
{
//缁檚tu瀵硅薄璧嫔埯鍊1001浼氩幓璋幂敤鐢ㄦ埛瀹氢箟镄勬瀯阃犲嚱鏁
student stu(1001); //瀹氢箟瀵硅薄甯﹀弬鏁
}

2.褰扑笉缁椤硅薄璧嫔埯鍊兼椂鏋勯犲嚱鏁板彲浠ラ粯璁わ纴涓岖敤鍐欙纸涔熷彲浠ュ啓锛夛纴榛樿
镄勬瀯阃犲嚱鏁颁竴鑸镙煎纺鏄: 绫诲悕(){} 銆傚傦细
#include<iostream.h>

class student
{
public:
//缂虹渷镄勬瀯阃犲嚱鏁板氨鏄 student(){}
private:
int stunum;
};

void main()
{
//瀹氢箟绫诲硅薄镞惰皟鐢ㄦ瀯阃犲嚱鏁
student stu; //瀹氢箟瀵硅薄涓嶈祴鍒濆
}

褰撶劧浜嗭纴浣犱篃鍙浠ユ妸缂虹渷镄勬瀯阃犲嚱鏁拌嚜宸卞啓鍑烘潵銆傚傦细
#include<iostream.h>

class student
{
public:
student(){} //鎶婄己鐪佺殑鏋勯犲嚱鏁板啓鍑烘潵
private:
int stunum;
};

void main()
{
//缁檚tu瀵硅薄涓嶈祴鍒濆间絾绯荤粺杩樻槸浼氩幓璋幂敤榛樿ょ殑鏋勯犲嚱鏁
student stu; //瀹氢箟瀵硅薄涓嶈祴鍒濆
}

銆愪簩銆戙佹嫹璐濇瀯阃犲嚱鏁
杩欐槸鎴戝湪锘硅镄勬椂鍊栾嚜宸辨荤粨鍐欑殑绋嫔簭锛屽綋镞惰姳浜嗘垜涓嶅皯锷熷か锛岀幇鍦ㄦ棤锅垮夌尞缁欎綘锛
//涓夌嶆儏鍐典笅浼氲皟鐢ㄦ嫹璐濇瀯阃犲嚱鏁

1./*褰撶敤绫荤殑涓涓瀵硅薄铡诲埯濮嫔寲璇ョ被镄勫彟涓涓瀵硅薄镞剁郴缁熻嚜锷ㄨ皟鐢ㄦ嫹璐濇瀯阃犲嚱鏁板疄鐜版嫹璐濊祴鍊笺
#include <iostream.h>
class Point
{
public:
Point(int xx=0,int yy=0)
{
x=xx;
y=yy;
}
Point(Point &p);
int GetX()
{
return x;
}
int GetY()
{
return y;
}
private:
int x,y;
};
Point::Point (Point &p)//𨰾疯礉鏋勯犲嚱鏁帮纴褰㈠弬&P涓烘湰绫诲硅薄镄勫簲鐢
{
x=p.x;
y=p.y;
cout<<"𨰾疯礉鏋勯犲嚱鏁拌璋幂敤"<<endl;
}
void main(void)
{
Point A(1,2);
Point B(A); //褰撶敤绫荤殑涓涓瀵硅薄铡诲埯濮嫔寲璇ョ被镄勫彟涓涓瀵硅薄镞剁郴缁熻嚜锷ㄨ皟鐢ㄦ嫹璐濇瀯阃犲嚱鏁板疄鐜版嫹璐濊祴鍊笺
cout<<B.GetX()<<endl;
}

*/

/*
//鑻ュ嚱鏁扮殑褰㈠弬涓虹被瀵硅薄锛岃皟鐢ㄥ嚱鏁版椂锛屽疄鍙傝祴鍊肩粰褰㈠弬锛岀郴缁熻嚜锷ㄨ皟鐢ㄦ嫹璐濇瀯阃犲嚱鏁般备緥濡傦细
class Point
{
public:
Point(int xx=0,int yy=0)
{
x=xx;
y=yy;
}
Point(Point &p);
int GetX()
{
return x;
}
int GetY()
{
return y;
}
private:
int x,y;
};
Point::Point (Point & p)//𨰾疯礉鏋勯犲嚱鏁帮纴褰㈠弬&P(浠绘剰,濡&m,&n...)涓烘湰绫诲硅薄镄勫簲鐢
{
x=p.x;
y=p.y;
cout<<"𨰾疯礉鏋勯犲嚱鏁拌璋幂敤"<<endl;
}
void fun1(Point p)
{ cout<<p.GetX()<<endl;
}
void main()
{ Point A(1,2);
fun1(A); //璋幂敤𨰾疯礉鏋勯犲嚱鏁
}
*/

/*//鑻ュ嚱鏁扮殑褰㈠弬涓虹被瀵硅薄锛岃皟鐢ㄥ嚱鏁版椂锛屽疄鍙傝祴鍊肩粰褰㈠弬锛岀郴缁熻嚜锷ㄨ皟鐢ㄦ嫹璐濇瀯阃犲嚱鏁般备緥濡傦细
#include <iostream.h>

class Point
{
public:
Point(int xx=0,int yy=0)
{
x=xx;
y=yy;
}
Point(Point &p) //𨰾疯礉鏋勯犲嚱鏁帮纴褰㈠弬&P(浠绘剰,濡&m,&n...)涓烘湰绫诲硅薄镄勫簲鐢
{
x=p.x;
y=p.y;
cout<<"𨰾疯礉鏋勯犲嚱鏁拌璋幂敤"<<endl;
}
int GetX()
{
return x;
}
int GetY()
{
return y;
}
private:
int x;
int y;
};

Point fun2() //瀵硅薄鍑芥暟,绫诲氨鐩稿綋浜庢槸涓绉嶆暟鎹绫诲瀷,鍙浠ュ拰int涓镙蜂娇鐢
{
Point A(1,2);
return A; //杩斿洖瀵硅薄锛岃皟鐢ㄦ嫹璐濇瀯阃犲嚱鏁
}
void main()
{
Point B;
B=fun2();
cout<<B.GetX()<<" "<<B.GetY()<<endl; //涓嶅彲浠ユ槸cout<<B.x;锲犱负B.x鏄绉佹湁鍙橀噺锛屽彧鑳界敱绫诲嚱鏁板幓璁块梾
}
*/

阅读全文

与程序员构造函数详解相关的资料

热点内容
海康录像机怎么关视频加密 浏览:786
编程以后有可能被机器人代替吗 浏览:515
windows创建文件命令 浏览:984
linuxcopy文件内容 浏览:381
程序员帅哥秃顶 浏览:839
阿里云服务器开通流程 浏览:105
如何开云服务器 浏览:979
网站小说源码 浏览:301
php用什么ide 浏览:867
网上预约课程app哪个好 浏览:152
android兼容测试工具 浏览:96
云服务器不支持虚拟化怎么办 浏览:189
加密方式的演变 浏览:364
java常用算法pdf 浏览:734
服务器数据遇到异常什么原因 浏览:450
phpexif信息 浏览:543
单片机三字节浮点数 浏览:756
命令与征服泰伯利亚战争下载 浏览:378
c窗口界面编程 浏览:23
hypermill编程能做模板吗 浏览:782