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个回答
2015-12-04 · 知道合伙人教育行家
关注
展开全部
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
const int num ; 变量只能是定义的时候初始化。const就是不允许改变的意思。你在别的地方改变他的值肯定报错了
更多追问追答
追问
哪里有改变,两条都是同样的初始化赋值,完全一样的操作
追答
不一样的。下面的用法是定义的时候复制。 第一种的是 ,不是在定义的时候赋值。这就是初始化列表和 构造函数里面赋值的区别。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是规定,const变量必须初始化,const成员必须在初始化表里面进行初始化,初始化表是在构造函数执行前执行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不一样。
num(a),total(b)是在构造变量的时候,直接初始化数据。这是一个操作(调用int的构造函数)。
而num=a;是先构造出变量,然后赋值。这是两个操作。
num(a),total(b)是在构造变量的时候,直接初始化数据。这是一个操作(调用int的构造函数)。
而num=a;是先构造出变量,然后赋值。这是两个操作。
追问
不太明白,能再详细说下么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询