すぐに3があると呼ばれるC ++コピーコンストラクタ
1.別のオブジェクトを初期化するために作成されたオブジェクト
1 STU S2(10); // 参照コンストラクタでは、呼び出し 2 STU S3(S2); // コンストラクタコールをコピー 3。 COUT << " S2は年齢は" << ENDL << s2.s_age。
2.値によって関数に渡された値
1つの 空隙ワーク(STU秒) 2 { 3 4 } 5 ボイドTEST01() 6 { 7 STU秒。 8 作品(単数または複数); 9 } 10 のint main()の 11 { 12 // テスト(); 13 TEST01()。 14 リターン 0 ; 15 }
3.ローカルオブジェクトは、値によって返さ
1人の STUの行く() 2 { 3 STU P1を、 4 coutの<<(int型 *)&P1 << てendl; 5 リターンP1; 6 } 7 8 ボイドTEST02() 9 { 10 STU = W (行きます)。 11 COUT <<(INT *)&W << ENDL。 12 } 13 のint main()の 14 { 15 // テスト(); 16 // TEST01()。 17 TEST02()。 18 リターン 0; 19 }
完全なコード
1の#include <ビット/ STDC ++ H.> 2 使用して 名前空間STD; 3 。4 クラスSTU 。5 { 6 公共: 7 STU() 8 { 9 プット(" STU引数なしコンストラクタコール" ); 10 } 11 12は、 STU(INT 年齢) 13は、 { 14 s_age = 年齢; 15の プット(" STU引数コンストラクタコールを持つ" ); 16 } 17 18である STU(CONST STU&S) 19 { 20 // 着信コピーのすべてのプロパティすべての学生私には 21である s_age = s.s_age; 22は、 プット(" STUコピーコンストラクタコール" ); 23 } 24 〜STU() 25 { 26は プット(" STUデストラクタコール" ); 27 } 28 のint s_age; 29 }; 30 // 呼び出し 31は、 ボイド検査() 32 { 33は、 34である STU S2(10); // 参照コンストラクタを呼び出すと 35 STU S3(S2)を; // コピーコンストラクタコール 36 COUT << " S2は年齢は" << s2.s_age << ENDL; 37 [ COUT << " S3は年齢は、" << s3.s_age << ; ENDL 38である } 39 40 空隙ワーク(STU S) 41であり 、{ 42は 43である } 44が 空隙TEST01() 45 { 46は 、STU S 47 ワーク(S)。 48 } 49 50 STUの外出() 51 { 52 STU P1を、 53 coutの<<(int型 *)&P1 << てendl; 54 リターンP1; 55 } 56 57 ボイドTEST02() 58 { 59 = W STU (行きます)。 60 COUT <<(INT *)&W << ENDL。 61 } 62 のint main()の 63 { 64 // テスト(); 65 // TEST01(); 66 TEST02()。 67 リターン 0 ; 68 }