C++中 const成员变量为何不能初始化啊??
public:A(inta,intb){num=a;total=b;}private:constintnum;int&total;然后主函数Aa(3,4);这样就不行,说...
public:
A (int a,int b)
{
num = a;
total = b;
}
private:
const int num ;
int & total ;
然后主函数 A a (3,4); 这样就不行,说只能初始化不能赋值,我晕,这不就是初始化么?怎么会不行,如果换种方式就行了:
A (int a,int b): num(a), total(b)
{};
这样居然就行了,这本质上不就跟上面一样不都是赋值么,怎么一个报错一个就可以?操作上不都一样的么 展开
A (int a,int b)
{
num = a;
total = b;
}
private:
const int num ;
int & total ;
然后主函数 A a (3,4); 这样就不行,说只能初始化不能赋值,我晕,这不就是初始化么?怎么会不行,如果换种方式就行了:
A (int a,int b): num(a), total(b)
{};
这样居然就行了,这本质上不就跟上面一样不都是赋值么,怎么一个报错一个就可以?操作上不都一样的么 展开
8个回答
展开全部
不是不能初始化,是在定义的时候就必须初始化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
const常量 必须使用参数初始化表来初始化,不能在构造函数中执行赋值操作
所以 num 必须在参数初始化表中来初始化,但是 total 就随意了
所以 num 必须在参数初始化表中来初始化,但是 total 就随意了
追问
total 是引用啊,你的意思是?
追答
哦哦,total是引用啊!你是对的,引用也要在参数初始化表里初始化的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
他们看起来一样,实质是不一样的。A (int a,int b): num(a), total(b)是在预编译时就告诉了编译器的,属于初始化。
num = a;
total = b;另一个就不用说了。
num = a;
total = b;另一个就不用说了。
追问
total 是引用啊,你的意思是?
追答
total引用了变量b嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询