初始化列表的使用

C++中提供了初始化列表對成員變量進行初始化:

注意:

        成員的初始化順序與成員的聲明順序相同;

       成員的初始化順序與初始化列表中的位置無關;

      初始化列表先與構造函數的函數執行

 

#include <stdio.h>

class Value
{
private:
    int mi;
public:
    Value(int i)
    {
        printf("i = %d\n", i);
        mi = i;
    }
    int getI()
    {
        return mi;
    }
};

class Test
{
private:
    Value m2;
    Value m3;
    Value m1;
public:
    Test() : m1(1), m2(2), m3(3)
    {
        printf("Test::Test()\n");
    }
};


int main()
{
    Test t;
    
    return 0;
}

 

類中的const成員:

  類中的const成員會被分配空間的;

  類中的const成員的本質是制度變量;

  類中的const成員只能在初始化列表中指定初始值(編譯器無法直接得到const成員的初始值,因此無法進入到符號表成爲真正意義的常量)

class Value
{
private:
    int mi;
public:
    Value(int i)
    {
        printf("i = %d\n", i);
        mi = i;
    }
    int getI()
    {
        return mi;
    }
};

class Test
{
private:
    const int ci;
    Value m2;
    Value m3;
    Value m1;
public:
    Test() : m1(1), m2(2), m3(3), ci(100)
    {
        printf("Test::Test()\n");
    }
    int getCI()
    {
        return ci;
    }
    int setCI(int v)
    {
        int* p = const_cast<int*>(&ci);
        
        *p = v;
    }
};

 

 

初始化:對正在創建的對象進行初值設置;

賦值:對已經存在的對象進行值設置;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章