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)
{};

这样居然就行了,这本质上不就跟上面一样不都是赋值么,怎么一个报错一个就可以?操作上不都一样的么
展开
 我来答
任明星Ming
2013-07-18 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1153万
展开全部
A (int a,int b): num(a), total(b)
{};
这个是“明确”告诉编译器以变量a和b进行初始化。

A (int a,int b)
{
num = a;
total = b;
}
这个是进行赋值,赋值和初始化是不一样的。const只接受初始化,不接受赋值。
追问
这就是初始化,两个运行上完全一样的么
追答
运行的时候是一样的效果,只要你不要const类型。
985967518
2015-12-04 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109868
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

count只能在定义的时候初始化赋值。

const是一个编程语言的关键字,它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。

例如:

#include <stdio.h>
int main()
{
const int a=3;
printf("%d",a); 
return 0;
}
/*
运行结果:
3
*/

# include <stdio.h>
int main()
{
const int a;//就会报错,没有初始化赋值。 
a=3;//此处不能再修改变量值 
printf("%d",a); 
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友455632d898
2013-07-18 · TA获得超过275个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:339万
展开全部
const int num ; 变量只能是定义的时候初始化。const就是不允许改变的意思。你在别的地方改变他的值肯定报错了
更多追问追答
追问
哪里有改变,两条都是同样的初始化赋值,完全一样的操作
追答
不一样的。下面的用法是定义的时候复制。 第一种的是 ,不是在定义的时候赋值。这就是初始化列表和 构造函数里面赋值的区别。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吾守护奇迹
2013-07-18 · TA获得超过202个赞
知道小有建树答主
回答量:237
采纳率:66%
帮助的人:156万
展开全部
这是规定,const变量必须初始化,const成员必须在初始化表里面进行初始化,初始化表是在构造函数执行前执行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cooke1234
2013-07-18 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3620万
展开全部
不一样。
num(a),total(b)是在构造变量的时候,直接初始化数据。这是一个操作(调用int的构造函数)。
而num=a;是先构造出变量,然后赋值。这是两个操作。
追问
不太明白,能再详细说下么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式