c++ 類成員變數初始化順序
阿新 • • 發佈:2018-11-24
#include <iostream>
using namespace std;
class A
{
public:
//使用初始化列表初始化時,與定義成員變數的順序有關。
//因為成員變數的初始化次序是根據變數在記憶體中次序有關,而記憶體中的排列順序在編譯期就根據變數的定義次序決定了。
//A():n2(0),n1(n2 + 2){} //錯誤寫法。因為n1在n2前進行初始化,因此n1使用n2進行初始化得不到想要的值。
A():n3(20),n1(2),n2(n1 + 2){}
//在建構函式內初始化時,與成員變數在建構函式中的位置有關
/*A()
{
n2 = 0;
n1 = n2 + 2;
}*/
void print()
{
cout << "n1:" << n1 << " , n2:" << n2 << " , n3:" << n3 <<endl;
}
private:
int n1;
int n2;
const int n3;
};
//const成員常量只能在建構函式初始化列表中初始化,不能在建構函式中進行初始化
//static成員變數,不能在類內初始化
int main()
{
A a;
a.print();
return 0;
}