コンストラクション関数初期化リストのメンバー変数を初期化する必要がある場合
1322 ワード
クラスAがあり、そのデータメンバーは以下の通りである.
1
2
3
4
5
6
7
8
9
10
コンストラクション関数では、メンバー変数を初期化リストで初期化する必要があります.b c____.
コンストラクション関数では、メンバー変数がリストを初期化して初期化する必要がある場合は、次のようになります.
1、const定数メンバー、定数は初期化のみで、値を割り当てることができないため、初期化リストに置かなければならない.
2、参照タイプ、参照は定義時に初期化しなければならず、再付与できないので、初期化リストにも書く.
3、デフォルトコンストラクタのないクラスタイプ.初期化リストを使用すると、デフォルトコンストラクタを呼び出して初期化する必要がなく、コピーコンストラクタを直接呼び出すことができるからである.
static const char*dの場合、staticはクラスに属し、具体的なオブジェクトには属しないため、
staticメンバーはクラス内で初期化できませんが、static constメンバーは初期化リストにありますか?
答えはNO
1つはstaticがクラスに属し、インスタンス化されていないときにすでに存在し、コンストラクション関数の初期化リストは、インスタンス化されているときにのみ実行されます.
二つ目はstaticメンバーがオブジェクトに属していないことです.コンストラクション関数を呼び出すと、自然にオブジェクトが作成されます.オブジェクトと直接関係のないメンバーが何をしますか.
したがってstaticによって修飾された変数は構造関数で初期化する必要はない.
1
2
3
4
5
6
7
8
9
10
class
A {
...
private
:
int
a;
public
:
const
int
b;
float
* &c;
static
const
char
* d;
static
double
* e;
};
コンストラクション関数では、メンバー変数を初期化リストで初期化する必要があります.b c____.
コンストラクション関数では、メンバー変数がリストを初期化して初期化する必要がある場合は、次のようになります.
1、const定数メンバー、定数は初期化のみで、値を割り当てることができないため、初期化リストに置かなければならない.
2、参照タイプ、参照は定義時に初期化しなければならず、再付与できないので、初期化リストにも書く.
3、デフォルトコンストラクタのないクラスタイプ.初期化リストを使用すると、デフォルトコンストラクタを呼び出して初期化する必要がなく、コピーコンストラクタを直接呼び出すことができるからである.
static const char*dの場合、staticはクラスに属し、具体的なオブジェクトには属しないため、
staticメンバーはクラス内で初期化できませんが、static constメンバーは初期化リストにありますか?
答えはNO
1つはstaticがクラスに属し、インスタンス化されていないときにすでに存在し、コンストラクション関数の初期化リストは、インスタンス化されているときにのみ実行されます.
二つ目はstaticメンバーがオブジェクトに属していないことです.コンストラクション関数を呼び出すと、自然にオブジェクトが作成されます.オブジェクトと直接関係のないメンバーが何をしますか.
したがってstaticによって修飾された変数は構造関数で初期化する必要はない.