コンストラクタとデストラクタの呼び出しのヒント

1、コンストラクタの意味:それが含まれているクラスの名前と一致したクラスのメンバ関数名を、このメンバ関数はコンストラクタと呼ばれます

コンストラクタは、オブジェクトを作成するときに自動的に実行され、ユーザー・コールなしで、特別なメンバ関数であるが、我々はまた、手動で呼び出すことができます:2は、コンストラクタます。

フォーム
クラスTest2を
{ 
    パブリック
    Test2を()   // 引数なしのコンストラクタ
    { 
        M_A = 0 ; 
        M_B = 0 ; 
    } 
    Test2を(INT A)// が引数コンストラクタ
    { 
        M_A = A; 
        M_B = 0 ; 
    } 

    Test2を(INT A、int型 B)は// コンストラクタパラメータである   
    { 
        M_A = ; A 
        M_B = B; 
    }
    // 割り当てコンストラクタ(コピーコンストラクタ) 
    にTest2(のconstにTest2&OBJ)
    { 
        coutの << " 私は、コンストラクタだ" << てendl; 
    } 
    公共無効printT()
    { 
        coutの << " 普通のメンバ関数" << てendl; 
    } 
    プライベートint型m_a;
     int型M_Bを; 
}; 
// 引数なしのコンストラクタを呼び出して
、ボイド(メイン)
{ 
    Test2をt0の;   // オブジェクトを作成し、デフォルトのコンストラクタを書くために何も引数なしで呼び出されていない
    返します
} 
引数なしのコンストラクタを呼び出し
クラスTest2を
{ 
    パブリック
    Test2を()   // 引数なしのコンストラクタ
    { 
        M_A = 0 ; 
        M_B = 0 ; 
    } 
    Test2を(INT A)// が引数コンストラクタ
    { 
        M_A = A; 
        M_B = 0 ; 
    } 

    Test2を(INT A、int型 B)は// コンストラクタパラメータである   
    { 
        M_A = ; A 
        M_B = B; 
    }
    // 割り当てコンストラクタ(コピーコンストラクタ) 
    にTest2(のconstにTest2&OBJ)
    { 
        coutの << " 私は、コンストラクタだ" << てendl; 
    } 
    公共無効printT()
    { 
        coutの << " 普通のメンバ関数" << てendl; 
    } 
    プライベートINT M_A;
     int型M_B; 
}; 
// コール参照コンストラクタと
ボイド)(メイン
{ 
    // 1ブラケット。 
    Test2をT1(12);   // 二つのパラメータコンストラクタを呼び出す
     // 2 =数フランス 
    Test2をT2 =(34567。); // 強化++ Cの=等号文字 
    Test2を= T3を5。;
     // 3直接的。手動で呼び出すコンストラクタは、コンストラクタコール 
    Test2をTest2をさt4 =(12);    // オブジェクトT4初期化、匿名オブジェクトを生成
     //
     T1 = T4と;   // コピーT1〜T4のために   // 割り当て 
     // オブジェクトの初期化を割り当てオブジェクトは、二つの異なる概念である
    返します; 
}
コンストラクタ引数の呼び出しがあります。
TEST4クラス
{ 
パブリック:
	TEST4()//パラメータなしコンストラクタ
	{ 
	    M_A = 0; 
	    M_B = 0; 
	} 
	TEST4(INT A)
	{ 
            M_A = A; 
        M_B = 0; 
	} 
	TEST4(int型、int型B)//存在// 3つの方法のコンストラクタパラメータ
	{ 
	    M_A = A; 
	    M_B = B; 
	} 
	//コンストラクタ割り当て(コピーコンストラクタ)// 
	TEST4(CONST TEST4&OBJ)
	{ 
	    M_B obj.m_b + = 100; 
	    M_A = obj.m_a 100 +; 
	} 
公共:
	ボイドprintT()
	{ 
	  COUT << "通常のメンバ関数" << ENDL; 
       COUT << "M_A" << << M_A "M_B" << ENDL << M_B; 
	} 
プライベート。
	int型のm_a。
	M_BのINT; 
}; 

//代入1コンストラクタとは、別のオブジェクトにオブジェクトを初期化   
ボイドメイン()
{ 
	; TEST4 T1(1、2)
	TEST4 T0(8 ,. 9)、

	これら二つが呼び出すアサイン設定//機能
	TEST4のT2 = T1、T2にT1で初期化//割り当てがコンストラクタを呼び出します。T1は明らかOBJ、T2、およびメンバー変数は、独立変数T1として数学的に従属変数として同様に、T2、メンバ変数T1を制御するために使用することができ、T2 = F(T1)
        Test2をT5(T1); //呼び出し匿名オブジェクト

     //ません、次の2
     TEST4 T4 = TEST4(1,4); // T4オブジェクトを初期化します。同じ名前およびT4部材変数割り当て、後者(T4)を有するコンストラクタパラメータは、同じ変数の元の値に等しいです。
     T0 = T1; // T0は、代入演算子(共通変数割り当て部材)を使用してT1に。そして、初期化は、二つの異なる概念です。
	t2.printT(); //結果m_a = 101 M_B = 102これは新しいプライベートメンバ変数T2の値
     t4.printT(); //結果はm_a = 1 M_B = 4これは新しいメンバ変数プライベート値T4がです
t0.printT(); //結果は、新しいメンバ変数がプライベート値t0においてあるm_a = 1 M_B = 2である
t5.printTを(); //結果m_a = 101 M_B = 102、これは新しいメンバ変数プライベート値T5であります
返します; }

  

裁判所未満<< "があり、引数のコンストラクタ" <<てendl;}
//コンストラクタの代入(コピーコンストラクタ)// TEST4(のconst TEST4&OBJ ){coutの<< " 私もコンストラクタだ" <<てendl; M_B = OBJ。 + 100 M_B; m_A obj.m_a + = 100;}
公共:ボイドprintT(){COUT << "通常のメンバ関数" << ENDL; COUT << "m_a " << m_a << "m_a" << M_B < <ENDL;}プライベート:M_A INT; M_B int型;};
//割り当てコンストラクタと1が別のオブジェクトのボイドmain41(){TEST4 t1までオブジェクトを初期化( 1、2); TEST4のT0(1、2)。
= //代入演算子は= T1レンガT0を投げる//)(= //演算子のコンストラクタが呼び出されます。T0からT1 //用いると初期化動作が2つの異なる概念に割り当てられている
//は、第1のタイプのメソッドを呼び出すTEST4 T2 = T1; // t2.printTを()T2にT1で初期化する。COUT << "こんにちは..." << ENDL;システム( "一時停止");リターン;}

おすすめ

転載: www.cnblogs.com/anSn/p/11589032.html