gpt4 book ai didi

c++ - 强制派生类使用基类的构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:26 26 4
gpt4 key购买 nike

有没有办法强制派生类使用抽象基类的构造函数?它一定不是真正的构造函数,我对创造性解决方案持开放态度。

class Abstract
{
private:
int Member;
string Text;

public:
Abstract(int Member, string Text)
{
this->Member = Member;
this->Text = Text;
}

// e.g. defining virtual functions
}

例如我的抽象类有一些私有(private)成员,每个派生类也应该有。而且它们应该在构造函数中定义,即使违背派生类的意愿也是如此。

我知道构造函数不是继承的。但是是否有产生类似行为的解决方法?

最佳答案

根据其他用户的建议,您必须将基类构造函数调用到派生类构造函数的初始化列表中。

但是 C++11 提出了另一个很酷的解决方案:inherited constructors :

class Base
{
Base(int Member, string Text) { };
};

class Derived : public Base
{
using Base::Base; // <-- Brings to derived the Base's constructor.
};

但是你必须保证你的编译器可以使用C++11的特性;当然,研究继承的构造函数是否符合您的要求,而不是仅仅因为它很酷就使用它。

关于c++ - 强制派生类使用基类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com