自定义类的初始化列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class ConstRef
 
{
public:
 
    ConstRef( int ii );
 
private:
 
    int i;
 
    const int ci;
 
    int & ri;
};
 
 
ConstRef::ConstRef( int ii )
 
{
    i = ii;         /* ok */
 
    ci = ii;        /* error: 不可以对 const类型 赋值 */
 
    ri = i;         /* 不可以对引用赋值 */
/* const 和 引用只可以初始化 */

这可以换一种方式,就是使用构造函数初始化列表
    ConstRef::ConstRef (int ii):i (ii), ci(ii),ri (ii){}

必须 要对 所有的
  • const成员
  • 引用成员
  • 没有默认构造函数类类型 成员
使用 初始化列表的方式 来初始化

同时 初始化类成员 的次序 是跟我们所 写的 初始化列表顺序无关的,它只跟成员定义的顺序相关

(先执行基类构造函数,如果有)然后该类初始化列表语句,再执行花括号的语句!
原文地址:https://www.cnblogs.com/zhxshseu/p/5294614.html