C++中类的成员变量初始化可以分为五种情况:
1.普通的变量:一般不考虑效率的情况下可以在构造函数中进行赋值,考虑效率的可以在构造函数的初始化列表中进行初始化。
class CTest
{
public:
Ctest();
...
private:
int m_nData;
...
};
CTest::CTest():m_nData( 0 ) //初始化列表方式
{
//m_nData = 0; //赋值方式
};
2. static静态变量:static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。
class CTest
{
public:
CTest();
...
private:
static int m_nData;
...
};
int CTest::m_nData = 0; //类外进行定义和初始化
3.const常量变量:const常量需要在声明的时候初始化,因此需要在变量创建的时候进行初始化。一般采用在构造函数的初始化列表中进行初始化。
class CTest
{
public:
CTest();
...
private:
const int m_nData;
...
};
CTest::CTest() : m_nData(100)
{
...
}
4.&引用型变量:引用型变量和const变量类似,需要在创建的时候进行初始化,也是在初始化列表中进行初始化,但需要注意用&类型。
class CTest
{
public:
CTest( int i );
...
private:
int& m_nData;
...
};
CTest::CTest( int i ) : m_nData( i )
{
...
}
5.static const integral变量:对于既是static又是const而且还是整型变量,可以直接在类的定义中初始化。
class CTest
{
public:
...
private:
static const int m_nData = 0; //success
static const short m_sData = 0; //success
static const float m_fData = 100; //failed,only static const integral data members can be initialized within a class
...
};