1. 程式人生 > >2.c++引數初始化列表

2.c++引數初始化列表

建構函式初始化列表以一個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟一個放在括號中的初始化式。例如:

#include<iostream>using namespace std;struct test1{ test1():a(5),b(10) { //a = 5; //b = 10; cout<<"a="<<this->a<<endl; cout<<"b="<<this->b<<endl; }
int a; int
b;};int main(){ test1 test;
return 0;}注意:初始化列表的成員初始化順序:
    C++初始化類成員時,是按照宣告的順序初始化的,而不是按照出現在初始化列表中的順序。

    Example:

class test1{
    test1(
int x, int y);
    
int m_x;
    
int m_y;
}
;

test1::test1(
int x, int y) : m_y(y), m_x(m_y)
{
}

你可能以為上面的程式碼將會首先做m_y=I,然後做m_x=m_y,最後它們有相同的值。但是編譯器先初始化m_x,然後是m_y,,因為它們是按這樣的順序宣告的。結果是m_x將有一個不可預測的值。有兩種方法避免它,一個是總是按照你希望它們被初始化的順序宣告成員,第二個是,如果你決定使用初始化列表,總是按照它們宣告的順序羅列這些成員。這將有助於消除混淆。