[英]Pass Parameter to Base Class Constructor while creating Derived class Object
考虑两个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;
};
请注意,我之前甚至没有使用“public”访问说明符。 这不是必需的,因为继承的构造函数是隐式声明的,具有与基类相同的访问级别。
有关更多详细信息,请参阅以下站点继承构造函数 : https : //en.cppreference.com/w/cpp/language/using_declaration
您也可以参考https://softwareengineering.stackexchange.com/a/307648来了解构造函数继承的限制。
A级{public:int aval;
A(int a):aval(a){};
~A();
};
B级:公共A {public:int bval;
B(int a,int b):bval(a),A(b){};
~B();
};
int main(){
B *bobj = new bobj(5,6);
//or
A *aobj=new bobj(5,6);
}
在这种情况下,您将为基类和派生类分配值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.