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

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

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

[cpp]  view plain copy
  1. class test  
  2. {  
  3.        private:  
  4.     int a;//普通成员  
  5.     const int b;//常量成员  
  6.     static int c;//静态成员  
  7.     static const int d;//静态常量成员  
  8.     int &e;//引用类型成员  
  9.   
  10. };  
大概的类型就是这几类,当然还有其他一些比如 int* f; int* &g;const int* h;这些无非都可以归为以上某一类。因此为了简化就不详细罗列了。

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

1)用“=”赋值

2)用成员初始化列表

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

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

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

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

[cpp]  view plain copy
  1. class test  
  2. {  
  3.     //int a=1;//错误:对象没有构造,尚未分配内存空间  
  4.     int a;  
  5.     const int b;  
  6.     //static int c=1;//错误:不可以在声明时初始化  
  7.     static int c;  
  8.     const static int d=1;//唯有该类型可以这样  
  9.     int &e;//引用类型必须用成员初始化列表  
  10. public:  
  11.     test(int _e):b(1),e(_e)/*引用初始化必须为左值*/{}  
  12. };  
  13. int test::c=1;  
  14. const int test::d=1;//也可以这样初始化  

最后说明 一点,成员变量的初始化顺序只与声明的顺序一致,而和在程序中赋值先后顺序无关。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值