C++之中子类能使用父类的有参构造函数吗?如何使用?

如题,如何使用?还有,那些子类中新增加的变量,在父类构造函数之中没有,未定义,是不是就会默认为0?
如何使用,比如父类是class a
子类是class b :public a
父类构造函数是a(int a,int b,int c)
那么子类构造函数是?

第1个回答  2020-02-20
构造是不会继承的,这句话的意思是:子类对象不能 (用点的方式) 访问父类的构造。但不代表子类实例化时父类构造不会运行。
一句话,父类不能只写有参构造(无参被屏蔽了),若一定只写有参构造,那就必须 子类要显式调用父类的有参构造。 否则就会报错。
因为,除了上述情况外,子类会无条件的调用父类无参构造,若父类没有无参构造,所以就会报错。
第2个回答  推荐于2017-10-02
比如在子类b中新定义了d,并且使用b的有参构造函数可以这么做:
(也就是说在父类中未定义,在子类中也可以在构造时,为其赋值)
b(int a, int b, int c,int d):a(a, b,c){
this->d = d;
}本回答被提问者采纳
第3个回答  2014-12-21
可以用
b(int d, int e, int f):a(d,e,f){}
的方式调用父类的构造
第4个回答  2014-12-21
如果增加了私有变量,你可以重载父类构造函数

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

子类继承父类的构造函数(方法)吗?
我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent(),c(0){\/\/在这里,创建Child对象时先构造父类域}Child(inti):Parent(i+1 ),c(i){\/\/同上}};由于构造函数非常特别,对它...

C++如何调用父类的方法?
子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先在子类中找,找不到会报错。C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向...

关于c++中子类在析构时默认调用父类的析构方法
假设父类有多个构造函数,你可以指定使用哪一个构造函数,但是依然是父类构造函数先被调用。(或者父类没有默认构造函数,都是带参数的,这个时候必须指定用哪一个)如果你不写构造和析构函数,编译器会默认给你生成一个空的。绝对不要在子类析构函数中显式调用父类的析构函数,因为编译器会插入一段...

c++子类在继承有参数的父类时为什么要往父类传参,传过去的参数有什么用...
没有参数父类的构造函数无法执行。传过去的参数用于父类的构造函数执行(通俗的说,一般用于初始化父类的成员变量等)。参数是传给父类的构造函数的。换而言之,父类的成员变量的初始化时保存了这个变量;或者用于父类实例化时需要一次性使用的参数(比如,对话框尺寸、指定类中的枚举类型等)。

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

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

C++为何在子类里声明父类变量会出错??--应输入类型说明符?
语法错误,不能在定义类成员变量时使用除此类的默认构造函数以外的其它构造函数。解决办法:1、为父类提供一个默认构造函数或为一个参数的构造函数提供一个默认值 2、改成 Father f;3、在Son类的构造函数内部初始化f,像这样:f=Father(15);或在Son类的构造函数的成员初始化列表中初始化f,像这样...

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++中父类对象和子类对象之间如何转换
首先将一个父类Base的引用base绑定到子类对象,然后将该引用作为实参传递给copy构造函数。copy构造函数使用 子类B1对象的父类部分,对a进行初始化。构造函数运行完毕,就产生了对象a。从父类到派生类的自动转换是不存在的。参考资料:C++ Primer 第四版 487页-490页 ...

相似回答