繁体   English   中英

你可以调用基类的构造函数来创建派生对象吗?

[英]Can you call a constructor for a base class to create a derived object?

class class1 {
public:
    class1(int x);

};

class class2 : public class1 {
};

我可不可以做:

class2 my_class2(10);

或者我是否必须为class2再次定义构造函数(即使它完全相同)?

由于C ++ 11构造函数可以继承:

class class2 : public class1 {
public:
    using class1::class1;
};

否则你必须做以下事情:

class class2 : public class1 {
public:
    class2(int x): class1(x) {}
};

在构造派生类的对象时,无论如何都必须调用基类的构造函数。

从C ++ 17开始,您可以通过聚合初始化直接调用公共基类构造函数 - 而无需向类添加任何代码:

class2 my_class2{2}; // Note the curly braces!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM