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

类成员变量的初始化对于初学者来说是一个头疼的问题,总是记不住XXX类型应该怎样进行初始化。为了解决后顾之忧,今天就把类中所有类型的成员变量的初始化做一个总结。

首先,我们来看看C++的类中都有哪几种类型的成员变量。

class test
{
       private:
	int a;//普通成员
	const int b;//常量成员
	static int c;//静态成员
	static const int d;//静态常量成员
	int &e;//引用类型成员

};
大概的类型就是这几类,当然还有其他一些比如 int* f; int* &g;const int* h;这些无非都可以归为以上某一类。因此为了简化就不详细罗列了。

成员变量的初始化有且仅有两种:

1)用“=”赋值

2)用成员初始化列表

记住一点:只能用成员初始化列表有两类:常量成员(注意没有静态常量成员)和引用类型成员。

再记住一点:静态成员和静态常量成员由于是类共有的,不是属于某一个对象的,因此不能再构造函数中初始化。

最后记住一点:静态成员(这里不包括静态常量成员)必须在类外初始化。

最后的最后记住一点:引用变量必须初始化后才能使用。

class test
{
	//int a=1;//错误:对象没有构造,尚未分配内存空间
	int a;
	const int b;
	//static int c=1;//错误:不可以在声明时初始化
	static int c;
	const static int d=1;//唯有该类型可以这样
	int &e;//引用类型必须用成员初始化列表
public:
	test(int _e):b(1),e(_e)/*引用初始化必须为左值*/{}
};
int test::c=1;
const int test::d=1;//也可以这样初始化

最后说明 一点,成员变量的初始化顺序只与声明的顺序一致,而和在程序中赋值先后顺序无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值