C++问题求解,在类中为什么不能给数据成员初始化值:

#include<iostream>#include<fstream>usingnamespacestd;classA{public:inta=10;//为什么这样编辑就... #include<iostream>
#include<fstream>
using namespace std;
class A
{
public:
int a=10;//为什么这样编辑就会出错,而把它改成static const int a=10这样就可以了呢 这又是为什么噢?
};
展开
 我来答
ssilspro
推荐于2017-11-28 · TA获得超过2625个赞
知道大有可为答主
回答量:1148
采纳率:0%
帮助的人:1713万
展开全部
因为类只是定义的类型, 还没有实例化,也就是没有定义类的对象(变量), 没法存储

你可以在初始化列表里进行初始化 , 而构造函数的函数体之内赋值的话, 是在初始化后,
-------------
至于定义成static的, 这是静态的, 所有对象共享一个副本, 程序开始执行就初始化了, 就算没有定义对象, 也有它的实例, 能直接使用 A::static_a = xxx;
Lunar_wlj
2019-01-09 · TA获得超过466个赞
知道答主
回答量:105
采纳率:0%
帮助的人:51.9万
展开全部
之前是因为:类的定义实际上相当于是类型的声明,并没有分配存储空间,初始化后的数据没有地方存放,类实例化以后才会有实体存储地址以及空间。
不过在C++11标准允许在类定义时初始化数据成员了,像我现在用Visual studio2017开发c++程序,可以在类体中初始化非静态数据成员。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱好_问问
2011-09-13 · TA获得超过411个赞
知道小有建树答主
回答量:365
采纳率:0%
帮助的人:349万
展开全部
因为类不能分配内存空间,只能声明有哪些变量,初始化要在构造函数中完成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-09-13
展开全部
类中给成员初始化必须用初始化列表
class A
{
int a;
public:
A ():a(10){}
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
都让我乖
2018-07-10
知道答主
回答量:1
采纳率:0%
帮助的人:847
展开全部
C++11,已经可以实现类内初始化了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式