C++子类会无条件继承父类的构造函数么

[复制链接]
查看11 | 回复3 | 2017-11-26 22:47:03 | 显示全部楼层 |阅读模式
我编了个程序..发现子类会继承父类的构造函数
但我的一本书上说派生类是无法继承构造和析构函数的..
这是怎么回事..书上说错了么?
我现在不想让子类去自动调用基类的构造函数....怎么办

回复

使用道具 举报

千问 | 2017-11-26 22:47:03 | 显示全部楼层
在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。子类和父类的构造函数的调用顺序:class B:public AB b1;那么构造函数的调用顺序是:A(),B()至于你不想调用基类的构造函数,那就自己写。希望可以帮到你。...
回复

使用道具 举报

千问 | 2017-11-26 22:47:03 | 显示全部楼层
构造是不会继承的,这句话的意思是:子类对象不能 (用点的方式) 访问父类的构造。但不代表子类实例化时父类构造不会运行。一句话,父类不能只写有参构造(无参被屏蔽了),若一定只写有参构造,那就必须 子类要显式调用父类的有参构造。否则就会报错。因为,除了上述情况外,子类会无条件的调用父类无参构造,若父类没有无参构造,所以就会报错。...
回复

使用道具 举报

千问 | 2017-11-26 22:47:03 | 显示全部楼层
在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。
子类和父类的构造函数的调用顺序:class B:public AB b1;那么构造函数的调用顺序是:A(),B()如果不想调用基...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行