码迷,mamicode.com
首页 > 其他好文 > 详细

构造函数初始化问题

时间:2015-11-19 12:48:16      阅读:137      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!