c++ 中规定:当派生类构造函数初始化时,必须同时对基类构造函数初始化,怎么理解?

在定义派生类的构造函数时除了对自己的成员进行初始化外,还必须负责调用基类的的构造函数使基类的数据成员得以初始化,请问这个怎么理解?classbase{public:bas... 在定义派生类的构造函数时除了对自己的成员进行初始化外,还必须负责调用基类的的构造函数使基类的数据成员得以初始化,请问这个怎么理解?
class base
{
public:
base(){};
};
class follow
{
public:
follow(){};//
};

是必须在定义follow()这个构造函数时对基类base的构造函数进行调用吗?
展开
 我来答
果建翼
2010-11-22 · TA获得超过7923个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2434万
展开全部
构造一个对象是从内向外构造的,也就是先构造基类,再构造派生类。因此必须在派生类构造函数执行前先执行基类构造函数。

你的那个例子因为构造函数都是最简单的无参数类型,所以无所谓,不需要额外明白的写出来,C++会默认帮你调用无参数的base()。实际上完整的写法应该是这样的:
class follow
{
public:
follow() : base() // 注意这里 .
{
}
}
只不过你不这么写C++也会默认帮你这么调用而已。
如果基类的构造函数是带参数的,那就必须明白写出来了:
class base
{
public:
base(int i){}
};
class follow
{
public:
follow(int i) : base(i) // 这里必须明确指定如何调用基类的构造函数 .
{
}
}

明白了么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式