首页 > 其他 > 详细

构造函数初始化问题

时间:2015-11-19 12:46:07      阅读:242      评论:0      收藏:0      [点我收藏+]

§对const类型的数据成员进行初始化时不能直接赋值,如下面的赋值操作是错误的。

 1 class  C  {
 2     public:
 3         C() {
 4             x = 0;      //OK,x  not const
 5             c = 0;      //ERROR,c  is const
 6         }
 7 
 8     private:
 9         int x;            //nonconst data member
10         const int c;    // const data  member
11 };

  因此,在C++中对const类型的数据成员进行初始化时必须为构造函数添加一个初始化列表,如下:

  

1 class  C{
2     public3         C () :c(0) {x = -1}
4         
5     private:
6         int x;
7         const int c;      //const data  member
8 };

  再次总结:(规则)

  (1)构造函数的初始化段由一个冒号:开始,紧跟在冒号之后的是需要进行初始化的数据成员,然后是由一对小括号括起来的初始值。

  (2)初始化列表仅在构造函数中有效,不能用于其他函数。

  (3)构造函数的初始化列表可以初始化任何数据成员(const 和 非const),但const类型的数据成员只能在初始化列表里初始化,而不能用其他方法进行初始化。

1 class  C {
2     public:
3         C() : c(0), x(-1){}            //empty body
4     
5     private:
6         int x;
7         const int c;                      //const data member
8 };

 

构造函数初始化问题

原文:http://www.cnblogs.com/dormant/p/4977028.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!