标题:请教,为何类中const变量和引用必须要使用成员初始化列表来初始化?
只看楼主
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
结帖率:31.58%
已结贴  问题点数:5 回复次数:4 
请教,为何类中const变量和引用必须要使用成员初始化列表来初始化?
class example
{
private:
const int num;
int& ret;
public:
 example(int n,int f):num(n),ret(f)//请问num和ret为何一定要用成员初始化列表来初始化?最好能举例说明,谢谢!
}
搜索更多相关主题的帖子: private example public 最好 
2012-06-14 15:56
yang400b
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2012-6-13
得分:0 
我只知道const是起保护作用,一但定义为常成员函数初始化之后就不能再改变这个成员函数的值,那么你定义的一个常变量,只有成员初始化才能初始化了。
2012-06-14 18:10
yang400b
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2012-6-13
得分:3 
还有类本身就只能构造函数或者成员函数来初始化。       你有试过用成员函数初始化吗?
2012-06-14 18:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
请问num和ret为何一定要用成员初始化列表来初始化?
------ 你能分清 初始化 和 赋值 的不同吗?
const和引用,必须被初始化,而成员初始化只有初始化列表一种方法。
2012-06-15 15:03
半年换半生
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2012-7-21
得分:0 
对于静态成员来说,它是属于所有的类对象的,在内存中只存在一份拷贝,自然对于它的初始化只能进行一次,所以初始化它的方法被设计在了类声明中,而非类对象的定义中。
而常量成员呢,它是每个类对象都会拥有一份拷贝,所以它的初始化应该随着每个类对象的构造而进行一次,所有它的初始化只能存在于类的构造函数中
2012-07-23 15:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-371532-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.188744 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved