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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 |
C++ primer 上面的一个例子: // constRef.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" class
constRef { public : constRef( int
ii); int
i; const
int ci; int
&ri; }; constRef::constRef( int
ii) { i=ii; ci=ii; ri=i; } //constRef::constRef(int ii):i(ii),ci(i),ri(ii){} int
_tmain( int
argc, _TCHAR* argv[]) { constRef B(5); printf ( "%d,%d,%d" ,B.i,B.ci,B.ri); return
0; } 这样写是有错误的,error C2758: “constRef::ci”: 必须在构造函数基/成员初始值设定项列表中初始化; constRef::ri”: 必须在构造函数基/成员初始值设定项列表中初始化; error C2166: 左值指定 const
对象; 而将 constRef::constRef( int
ii) { i=ii; ci=ii; ri=i; } 使用constRef::constRef( int
ii):i(ii),ci(i),ri(ii){} 替换 就正确了,你知道原因吗? 记住:可以初始化 const 对象或引用类型的对象,但不能对他们赋值。在开始执行构造函数的函数体之前,必须完成初始化。初始化 const 或引用类型数据成员的唯一机会是在构造函数初始化列表中。 |
必须在构造函数基/成员初始值设定项列表中初始化,布布扣,bubuko.com
原文:http://www.cnblogs.com/zzyoucan/p/3570493.html