コンストラクタ:オブジェクトが作成されるたびに(空隙を含む)は戻り値がない、と呼ばれる、特定のメンバ変数の初期値を設定するために使用することができます。
以下は、いくつかの異なるコンストラクタです。
共通のコンストラクタ:
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です }