C ++および括弧なしの括弧の間の差(RPM)でオブジェクトを作成する場合

C ++オブジェクト構文を作成するために-----

1スタックにMyClassを作成します。

ヒープブラケットのMyClass * A =新しいMyClassの()で作成した2。

ブラケットのMyClass * A =新しいMyClassのなし3。

4つの.--------------- MyClassの();引数なしMyClassのタイプの関数の戻り値を宣言する。

1の#include <iostreamの>
 2  クラスMyClassの
 3  {
 4  公共5つの     MyClassの() 
 6      { 
 7          のstd :: COUT << " !ハローMyClassの" << はstd :: ENDL。 
8      }
 9つの      MyClassの(int型NUM(I):I)
 10      {
 11          のstd :: COUT << " !ハローMyClassの------ INT " << はstd :: ENDL。 
12      }
 13   
14      空隙MyMethodは() 
 15      { 
16          STD :: COUT << " 出力メンバーシップNUM:" << << NUM STD :: ENDL; 
 17      }
 18である  
19。 プライベート20である     INT NUM;
 21である };
 22は、 INT (メイン)
 23である {
 24      // ---- -----------のコンストラクタを呼び出す
25      ; MyClassのC1 // 引数なしで表示コンストラクタ、またはパラメータがデフォルトコンストラクタを持っています。
26は、      MyClassのC2(); // 引数なしのコンストラクタと呼ばれていない、それぞれの場合において、関数の宣言は、型MyClassの唯一の値を返しがある
27      (MyClassのC3を1); //はコンストラクタパラメータINT呼び出し
28      / *---------------カッコ内の新しいキーワードの場合と差は---括弧されていない
 29      カスタムタイプの場合1を、違いはありません、デフォルトのコンストラクタを使用している
 30      2内蔵型初期化されるブラケット用
 31である     * / 
32      STD :: COUT << STD :: ENDL;
 33は、      MyClassの* C4 = 新しい新; MyClassの()
 34は、      >でC4- )MyMethodは(;
 35の      MyClassの* = C5 新しい新しい MyClassの(1。);
 36      C5-> MyMethodは();
 37 [      MyClassの= C6 * 新しい新しいMyClassの、
 38である      C6-> MyMethodは();
 39   
40      // 内蔵型
41は、      STD :: << COUTstd ::てendl;
42      INT * pint1 = 新しい INT1 )。
43      INT * pint2 = 新しい int型();
44      INT * pint3 = 新しい int型;
45   
46      のstd :: coutの<< * pint1 << "  " << * pint2 << "  " << * pint3 << はstd ::てendl;
47      リターン 0 ;
48 }

出力:

 

 

結論:ビルトインタイプの新しいオブジェクトのキーワードを作成するときのために:大括弧は、括弧なしで、初期化されますが初期化されていない、カスタム型のためには何の違いをデフォルトコンストラクタを呼び出していない、プラス括弧なします。

 

おすすめ

転載: www.cnblogs.com/Stephen-Qin/p/11619897.html