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

我编了个程序..发现子类会继承父类的构造函数
但我的一本书上说派生类是无法继承构造和析构函数的..
这是怎么回事..书上说错了么?
我现在不想让子类去自动调用基类的构造函数....怎么办

在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。

子类和父类的构造函数的调用顺序:
class B:public A
B b1;
那么构造函数的调用顺序是:A(),B()

至于你不想调用基类的构造函数,那就自己写。希望可以帮到你。
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-20
构造是不会继承的,这句话的意思是:子类对象不能 (用点的方式) 访问父类的构造。但不代表子类实例化时父类构造不会运行。
一句话,父类不能只写有参构造(无参被屏蔽了),若一定只写有参构造,那就必须 子类要显式调用父类的有参构造。 否则就会报错。
因为,除了上述情况外,子类会无条件的调用父类无参构造,若父类没有无参构造,所以就会报错。
第2个回答  推荐于2018-03-03

  在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。

        子类和父类的构造函数的调用顺序:

class B:public A
B b1;

  那么构造函数的调用顺序是:A(),B()

  如果不想调用基类的构造函数,那么就应该在子类中写一个构造函数。

第3个回答  2008-12-30
会的,会自动继承

如果不想的话,在定义子类的时候再写一遍构造函数,这叫做重载,这样这个子类生成的时候就会调用自己的那个构造函数
第4个回答  2008-12-30
书上说的是对的 ,在每个类中如果用户自己不定义构造函数那么系统会自动生成一个但是不做任何初始化的工作,你写的可能没有语法错误,但应该是系统生成自动的,无法完成初始化工作

C++子类会无条件继承父类的构造函数么
在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。子类和父类的构造函数的调用顺序:class B:public A B b1;那么构造函数的调用顺序是:A(...

c++ 子类继承父类构造方法吗
不能,调用格式:父类名::构造函数 楼上说的super是java的,c++中允许多继承(即多个父类),所以没有super关键字

c++子类在继承有参数的父类时为什么要往父类传参,传过去的参数有什么用...
原本父类构造的时候就需要参数,子类继承的是父类,没有参数父类的构造函数无法执行。传过去的参数用于父类的构造函数执行(通俗的说,一般用于初始化父类的成员变量等)。参数是传给父类的构造函数的。换而言之,父类的成员变量的初始化时保存了这个变量;或者用于父类实例化时需要一次性使用的参数(...

c++中子类不能继承父类的一些函数这个不能继承修饰的到底是什么
不能说是不能继承。通常情况下,子类的构造函数和析构函数一般会包含父类的流程。默认情况下,构造对象时,先调用父类的构造函数,然后调用子类的构造函数。销毁时是相反的,先调用子类的析构函数,再调用父类的析构函数。赋值运算符在程序员不重写的情况下,编译器会默认生成一个,但是它做的事情是位...

c++中的构造函数能被继承吗?
构造函数是不能被继承的,但是可以被调用,如果父类重新定义了构造函数,也就是没有了默认的构造函数,子类创建自己的构造函数的时候必须显式的调用父类的构造函数.即子类构造函数:父类构造函数{}

子类继承父类的构造函数(方法)吗?
根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent(),c(0...

子类可以继承父类的什么
子类可以获得除private权限以外的所有父类属性,但是:1、在子类继承父类的时候,子类必须调用父类的构造函数。2、如果父类有默认构造函数,子类实例化时自动调用,但如果父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数。3、还有在java的继承当中子类是不可以继承父...

C++ 继承 子类无论是调用有参构造,还是无参构造, 一定会调用父类的...
不是的,如果在子类中显式调用父类的有参构造函数则不会调用父类的无参构造函数 以下是代码,可自己执行实践 include <iostream> using namespace std;class A { public:int a;int b;A(){ cout<<"A Constructed 1\\n";} A(int a,int b){ this->a=a;this->b=b;cout<<"A Constructed...

关于c++中子类在析构时默认调用父类的析构方法
(或者父类没有默认构造函数,都是带参数的,这个时候必须指定用哪一个)如果你不写构造和析构函数,编译器会默认给你生成一个空的。绝对不要在子类析构函数中显式调用父类的析构函数,因为编译器会插入一段调用代码,如果你再显式调用,那么会造成调用两次,谁也不知道会发生什么。

子类都会首先调用父类的构造函数吗?
不是的,子类可以无条件调用父类的无参数构造函数,如要调用有参数构造函数的话需要显式调用,但如果子类中没有显式调用父类的构造函数时,会调用父类编译器自动给加上的无参构造函数,你可以通过反编译看到父类中多了一个无参的构造函数。如何调用父类的构造函数 es6 E9 和 IE10。原因是 ocs 实...

相似回答