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;
}
};
初始化:對正在創建的對象進行初值設置;
賦值:對已經存在的對象進行值設置;