【问题标题】:Construct an inherited class by calling both of parameterized parent class constructors通过调用两个参数化的父类构造函数来构造一个继承的类
【发布时间】:2012-09-20 00:31:07
【问题描述】:

这是一个类:

class P1{
public:
    P1(int i){}
};

这是另一个类:

class P2{
public:
    P2(int i){}
};

这是一个继承自上面两个类的类:

class D: public P1, public P2{
    //?
};  

我是否也继承了这两个类的构造函数?
如何编辑 D 类,以便我可以通过以下方式构造派生类:

D d(11,22);

【问题讨论】:

  • 不,你没有继承构造函数。但是您可以访问基类构造函数。
  • 您需要的是Member Initalizer list
  • 类 P1:不是 A,你是指 P1 吗?
  • @spin_eight 他当然做到了。这是一个错字。
  • 您可以 inherit constructors 使用 C++11 的新 tricks。但在你的情况下,我想知道这是否可能,因为两个基类构造函数具有相同的签名。

标签: c++ class inheritance constructor c++11


【解决方案1】:
class D : public P1, public P2
{
    public:
       D(int x, int y) : P1(x), P2(y) 
       {
       }
};

【讨论】:

    【解决方案2】:

    这是这样做的方法,

    class D: public P1, public P2{
        D(int x, int y) // Have your own constructor for the derived class
            : P1(x), P2(y) {}
    };
    

    【讨论】:

      【解决方案3】:

      构造函数不能隐式继承。 但是为了能够使用基类构造函数,请使用前面的答案中已经提出的成员初始化语法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        • 1970-01-01
        • 2011-12-08
        • 2019-12-14
        • 2013-02-12
        • 2015-06-20
        相关资源
        最近更新 更多