C++构造函数问题

cool酷 2018-12-05 10:59:28
为什么会调用两次父类构造函数
...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
鲁维娟 2018-12-07
  • 打赏
  • 举报
回复
#include <iostream>

using namespace std;

class Line
{
public:
void setLength( double len );
double getLength( void );
Line(); // 这是构造函数

private:
double length;
};

// 成员函数定义,包括构造函数
Line::Line(void)
{
cout << "Object is being created" << endl;
}

void Line::setLength( double len )
{
length = len;
}

double Line::getLength( void )
{
return length;
}
// 程序的主函数
int main( )
{
Line line;

// 设置长度
line.setLength(6.0);
cout << "Length of line : " << line.getLength() <<endl;

return 0;
}
zhouqunhai 2018-12-07
  • 打赏
  • 举报
回复
继承类里有父类对象
cool酷 2018-12-07
  • 打赏
  • 举报
回复
引用 3 楼 flcnrcn 的回复:
引用 2 楼 cocooool 的回复:
[quote=引用 1 楼 flcnrcn 的回复:]因为你的继承类里有父类对象
那不应该调用一次父类构造函数么
因为你的Derived类继承Base类。在Derived类中没有父类对象的情况下当创建子类对象时会调用父类构成函数一次。你现在子类中有父类对象,因此在 创建子类对象时会调用父类构成函数两次。分别是创建子类对象时掉用一次创建父类对象时调用一次。你想只调用父类构成函数一次简单把子类中的 Base d去掉就可以了。[/quote]懂了,谢谢
flcnrcn 2018-12-06
  • 打赏
  • 举报
回复
引用 2 楼 cocooool 的回复:
引用 1 楼 flcnrcn 的回复:
因为你的继承类里有父类对象
那不应该调用一次父类构造函数么
因为你的Derived类继承Base类。在Derived类中没有父类对象的情况下当创建子类对象时会调用父类构成函数一次。你现在子类中有父类对象,因此在 创建子类对象时会调用父类构成函数两次。分别是创建子类对象时掉用一次创建父类对象时调用一次。你想只调用父类构成函数一次简单把子类中的 Base d去掉就可以了。
cool酷 2018-12-06
  • 打赏
  • 举报
回复
引用 1 楼 flcnrcn 的回复:
因为你的继承类里有父类对象
那不应该调用一次父类构造函数么
flcnrcn 2018-12-06
  • 打赏
  • 举报
回复
因为你的继承类里有父类对象

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧