派生类的构造顺序是什么~~

dokee 2004-11-20 07:19:17
请看下面的程序,难道对象c要调用2个不同类的构造函数吗,岂不是要创建2次了?
#include <iostream.h>

class Vehicle
{
public:
Vehicle()
{
cout<<"constructing an Vehicle object\n";
}
};


class Car:public Vehicle
{
public:
Car()
{
cout<<"constructing an Car object\n";
}
};

void vehiclefn(Vehicle& s)
{
cout<<"call in vehiclefn\n";
}

void main()
{
Car c; //创建对象
Vehicle d;
vehiclefn(c);
vehiclefn(d);
}
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenteanet 2004-11-21
  • 打赏
  • 举报
回复
楼上都已经说的很清楚啦...
normalnotebook 2004-11-20
  • 打赏
  • 举报
回复
因为派生类继承了基类的成员变量和成员方法,但不继承基类的构造函数和析够函数。所以在声明一个派生类对象时,也必须调用基类的构造函数来初始化派生类对象中的基类成员。此时即可以隐式的调用,也可以明确的调用。
调用顺序为:
首先调用基类的构造函数,然后在调用派生类中的成员对象的构造函数,最后才调用派生类的构造函数。
yang1218150 2004-11-20
  • 打赏
  • 举报
回复
构造一次,c是有基类的结构和它自己的结构组成的,所以先用基类的构造函数填充一部分内容,在用它自己的构造函数填充一部分内容。下面是一个拷贝构造函数。哈哈~~
champion316 2004-11-20
  • 打赏
  • 举报
回复
还有先构造全局,在构造局部.
SnakeYangNan 2004-11-20
  • 打赏
  • 举报
回复
顺序就是,先构造基类,然后是派生类,当然要调用基类的构造函数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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