初始化列表的使用

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

 

 

初始化:对正在创建的对象进行初值设置;

赋值:对已经存在的对象进行值设置;

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