C++中成员变量的初始化方法

C++成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:
a.       常量型成员变量
b.       引用型成员变量
c.        静态成员变量
d.       整型静态常量成员变量
e.       非整型静态常量成员变量

  对于常量型成员变量和引用型成员变量的初始化,需要通过构造函数初始化列表的方式进行。不能在构造函数体内给常量型成员变量和引用型成员变量赋值。

class Test

{

private:

	int i;                                       // 普通成员变量

	const int ci;                                // 常量成员变量

	int &ri;                                     // 引用成员变量

	static int si;                               // 静态成员变量

//	static int si2 = 100;                        // error: 只有静态常量成员变量,才可以这样初始化

	static const int csi;                        // 静态常量成员变量

	static const int csi2 = 100;                 // 静态常量成员变量的初始化(Integral type)

	static const double csd;                      // 静态常量成员变量(non-Integral type)

//	static const double csd2 = 99.9;      // error: 只有静态常量整型数据成员才可以在类中初始化

};

 

我们在通过实例还说明一下:

<span style="color: rgb(17, 17, 17); font-size: 13px; line-height: 21.0599994659424px; white-space: pre-wrap;">Test.h文件</span>
<span style="color: rgb(17, 17, 17); font-size: 13px; line-height: 21.0599994659424px; white-space: pre-wrap;"><span style="color: rgb(17, 17, 17); font-size: 13px; line-height: 21.0599994659424px; white-space: pre-wrap;">#pragma once</span>
</span>
class Test
{
private :
	int   m_var1;
//	int   m_var11= 4;				//错误的初始化方法
	const int   m_var2 ;
//	const int   m_var22 =22222;		//错误的初始化方法
	static int  m_var3;
//	static int  m_var3333=33333;	//错误,只有静态常量成员才能直接赋值来初始化
	static const int   m_var4=4444;	//正确,静态常量成员可以直接初始化
	static const int   m_var44;
public:
	Test(void);
	~Test(void);
};

Test.cpp
<span style="color: rgb(17, 17, 17); font-size: 13px; line-height: 21.0599994659424px; white-space: pre-wrap;">#include "test.h"</span>
<span style="color: rgb(17, 17, 17); font-size: 13px; line-height: 21.0599994659424px; white-space: pre-wrap;">int Test::m_var3 = 3333333;<span style="white-space:pre">			</span>//静态成员的 正确的初始化方法


//    int Test::m_var1 = 11111;;<span style="white-space:pre">	</span>//错误 静态成员才能初始化
//    int Test::m_var2 = 22222;<span style="white-space:pre">	</span>//错误
//    int Test::m_var44 = 44444;<span style="white-space:pre">	</span>//错误的方法,提示重定义
Test::Test(void) :m_var1(11111),m_var2(22222)   //正确的初始化方法 , m_var3(33333) 不能在这里初始化
{
<span style="white-space:pre">	</span>m_var1 =11111; //正确, 普通变量也可以在这里初始化
<span style="white-space:pre">	</span>//m_var2 = 222222; 错误,因为常量不能赋值,只能在 构造函数的初始化列表” 那里初始化
}
</span>





 

你可能感兴趣的:(C++中成员变量的初始化方法)