注册 登录
编程论坛 C++教室

请教,为何类中const变量和引用必须要使用成员初始化列表来初始化?

全世界安静 发布于 2012-06-14 15:56, 4019 次点击
class example
{
private:
const int num;
int& ret;
public:
 example(int n,int f):num(n),ret(f)//请问num和ret为何一定要用成员初始化列表来初始化?最好能举例说明,谢谢!
}
4 回复
#2
yang400b2012-06-14 18:10
我只知道const是起保护作用,一但定义为常成员函数初始化之后就不能再改变这个成员函数的值,那么你定义的一个常变量,只有成员初始化才能初始化了。
#3
yang400b2012-06-14 18:12
还有类本身就只能构造函数或者成员函数来初始化。       你有试过用成员函数初始化吗?
#4
rjsp2012-06-15 15:03
请问num和ret为何一定要用成员初始化列表来初始化?
------ 你能分清 初始化 和 赋值 的不同吗?
const和引用,必须被初始化,而成员初始化只有初始化列表一种方法。
#5
半年换半生2012-07-23 15:48
对于静态成员来说,它是属于所有的类对象的,在内存中只存在一份拷贝,自然对于它的初始化只能进行一次,所以初始化它的方法被设计在了类声明中,而非类对象的定义中。
而常量成员呢,它是每个类对象都会拥有一份拷贝,所以它的初始化应该随着每个类对象的构造而进行一次,所有它的初始化只能存在于类的构造函数中
1