1. 程式人生 > >c++ 類成員變數初始化順序

c++ 類成員變數初始化順序

#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; }