考虑两个班A
和B
class A
{
public:
A(int);
~A();
};
class B : public A
{
public:
B(int);
~B();
};
int main()
{
A* aobj;
B* bobj = new bobj(5);
}
现在,类B
继承A
。
我想创建的对象B
。 据我所知,创建一个派生类对象,也将调用基类的构造函数,但是这是不带任何参数的默认构造函数。
我想的是, B
取一个参数(比如5),并把它传递给的构造A
。 请给一些代码来演示这一概念。
使用基座部件初始化:
class B : public A
{
public:
B(int a) : A(a)
{
}
~B();
};
B::B(int x):A(x)
{
//Body of B constructor
}
如果你正在使用你的派生类的构造函数只是参数传递给基类,那么你也可以做到这一点在C ++ 11较短的方式:
class B : public A
{
using A::A;
};
注意之前,我还没有使用的“公共”访问符。 这是不需要的,因为继承的构造函数是隐与相同级别的访问在基类中声明。
有关详细信息,请参阅节继承构造在: https://en.cppreference.com/w/cpp/language/using_declaration
您也可以指https://softwareengineering.stackexchange.com/a/307648理解上构造继承限制。
类A {公共:INT AVAL;
A(int a):aval(a){};
~A();
};
B类:公共A {公共:INT BVAL;
B(int a,int b):bval(a),A(b){};
~B();
};
诠释的main(){
B *bobj = new bobj(5,6);
//or
A *aobj=new bobj(5,6);
}
在这种情况下,你要分配的基类和派生类中的值。
文章来源: Pass Parameter to Base Class Constructor while creating Derived class Object