首页 > 其他 > 详细

必须在构造函数基/成员初始值设定项列表中初始化

时间:2014-02-27 21:49:12      阅读:1389      评论:0      收藏:0      [点我收藏+]
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

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