導航:首頁 > 程序命令 > 程序員構造函數詳解

程序員構造函數詳解

發布時間: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鏄縐佹湁鍙橀噺錛屽彧鑳界敱綾誨嚱鏁板幓璁塊棶
}
*/

閱讀全文

與程序員構造函數詳解相關的資料

熱點內容
午馬全部電影完整版免費 瀏覽:131
可以給某一列加密嗎 瀏覽:236
如何使寬頻加密 瀏覽:453
四合院app怎麼開 瀏覽:191
日本電影播放器 瀏覽:615
國外用啥軟體看電影 瀏覽:985
迅雷加密下載密碼 瀏覽:33
訊飛輸入法加密碼教程 瀏覽:292
雙程2刪減部分 瀏覽:496
青島壓縮垃圾車 瀏覽:876
歐美有關電影中年女人出軌電視劇 瀏覽:641
python第三方庫在哪裡 瀏覽:127
電影網站知乎免費 瀏覽:467
python安裝echarts 瀏覽:219
帶有車震的影片 瀏覽:373
編譯o文件是否能刪除c 瀏覽:34
excel零基礎到高手命令 瀏覽:928
sqlserver2008命令備份 瀏覽:903
中英文雙字幕的電影 瀏覽:540
pdf可以轉cad嗎 瀏覽:312