C ++のコンストラクタとデストラクタで

コンストラクタ:オブジェクトが作成されるたびに(空隙を含む)は戻り値がない、と呼ばれる、特定のメンバ変数の初期値を設定するために使用することができます。

以下は、いくつかの異なるコンストラクタです。

共通のコンストラクタ:

1  .H:
 2  
3   明示メインウィンドウ(QWidgetの*親= 0 )。
4  
5  .C:
 6  
7メインウィンドウ::メインウィンドウ(QWidgetの* 親):
 8  QMainWindow(親)、
 9 UI(新しいUiの::メインウィンドウ)
 10  {
 11 UI-> setupUi(12  }
 13  
14  .H:
 15  
16  明示的なウィジェット(QWidgetの*親= 0 )。
17  
18  .C:
 19  
20ウィジェット::ウィジェット(QWidgetの*親):
 21  QWidgetの(親)、
 22 UI(新しいUiの::ウィジェット)
 23  {
 24 UI-> setupUi(25 }
コードの表示

パラメータを持つコンストラクタ:

デフォルトコンストラクタは、パラメータはありませんが、必要に応じて、コンストラクタはパラメータを持つことができます。オブジェクトが作成されるとき、これは、オブジェクトに初期値を代入します。

例:

1つの#include <iostreamの>
 2   
。3  使用して 名前空間STD;
 4。  
5つの。 クラスライン
 6。 {
 7。    公共8。       ボイドはsetLength(ダブルLEN);
 9。       ダブルのgetLength(ボイド);
 10        ライン(ダブル LEN);   // これはコンストラクタである
11   
12は、    プライベート13である       ダブル長さ;
 14  };
 15の  
16  // コンストラクタを含むメンバ関数定義、
17。ライン::ライン(ダブルLEN)
 18  {
 19      COUT << " オブジェクトが作成され、長さ= " << LEN << ENDL。
20      長さ= LEN。
21  }
 22   
23  ボイドライン::はsetLength(ダブルLEN)
 24  {
 25      の長さ= LEN。
26  }
 27   
28  二重線::のgetLength(ボイド29  {
 30      リターン長。
31  }
 32  // 程序的主函数
33 INT ()主
 34は {
 35     行ライン(10.0 );
 36   
37     // デフォルト設定の長さを取得
38は     COUT << " ラインの長さ:" << line.getLength()<< ENDL;
 39     // 再度設定した長さ
40     line.setLength(6.0 ); 
 41は     COUT << " ラインの長さ:" << line.getLength()<< ENDL、
 42は  
43である    戻り 0 ;
 44です }
コードの表示

 C ++では、明示的なキーワードは、クラスのコンストラクタを変更するために使用される唯一のタイプの変換を表示するように、修飾されたクラスのコンストラクタは、対応する暗黙的型変換で発生することができません。

フィールドを初期化する初期化リストを使用します。

2次同等の文言:

ライン::ライン(二重LEN):長さ(LEN)
{ 
    COUT << " オブジェクトが作成され、長さ= " << LEN << ENDL。
} 

ライン::ライン(二重LEN)
{ 
    長さ = LEN。
    COUT << " オブジェクトが作成され、長さ= " << LEN << ENDL。
}

一般的なデストラクタ:それはオブジェクトが削除作成されるたびに実行されます。クラス名デストラクタが同一で​​あるとして、唯一のプレフィックスとしてチルダ(〜)が先行し、それがどのパラメータを持つことができない、任意の値を返しません。デストラクタは、リソースの解放に先立って(そのようなファイル、メモリの解放などを閉じるなど)ルーチン終了することができます。

例えば:

1つの#include <iostreamの>
 2   
3。 使用した 名前空間STD;
 4。  
5。 クラスライン
 6。 {
 7。    公共8        ボイドはsetLength(ダブルLEN)
 。9        ダブルのgetLength(ボイド);
 10        ライン();    // これはコンストラクタの宣言であり、
11        〜ライン();   // これは、宣言デストラクタである
12は、  
13である    プライベート14        ダブル長さ;
 15  };
 16   
17  //成员函数定义、包括构造函数
18ライン::ライン(ボイド19  {
 20      COUT << " オブジェクトが作成され、" << ENDL。
21  }
 22行を::〜ライン(ボイド23  {
 24      COUT << " オブジェクトが削除され、" << ENDL。
25  }
 26   
27  ボイドライン::はsetLength(ダブルLEN)
 28  {
 29      の長さ= LEN。
30  }
 31   
32  ダブルGETLENGTH ::ライン(空隙33が 、{
 34で     戻り長さ;
 35  }
 36  // メイン関数プログラム
[37  INT メイン()
 38は、 {
 39     行線と、
 40   
41れる    // 長さ設定
42れる     line.setLength(6.0 ); 
 43である     COUT < < " ラインの長さ:" << line.getLength()<< ENDL、
 44は  
45     の戻り 0 ;
 46です }
コードの表示

コピーコンストラクタ:

 

おすすめ

転載: www.cnblogs.com/fanhua666/p/11512850.html