c++ - 必须设置变量的纯虚函数

标签 c++ inheritance pure-virtual

最近我读了一些关于 C++ 中纯虚函数概念的文章,我想知道,给定以下代码:

class First
{
public: 
    virtual void init() = 0;
protected: 
    bool initialized;
};

class Second : public First
{
public:
    void init() { ((*someting*) ? (initialized=true) : (initialized=false)); 
};

如果 First 类的创建者想要确保 init() 的实现必须将 initialized 变量设置为 true 或 false 他们怎么办那?是否有一个选项可以强制执行纯虚函数来设置从基类继承的任何变量?

最佳答案

您可以使 init protected 并让它返回 bool。 然后有一个新的 initialize 方法,它是公共(public)的并且还设置了 initialized 成员。

由于 init 现在有一个返回值,它必须由任何实现派生类的人设置。

class First
{
public: 
    void initialize() { initialized = init(); }

protected: 
    virtual bool init() = 0;
    bool initialized;
};

class Second : public First
{
public:
    bool init() { return (*something*); }
};

关于c++ - 必须设置变量的纯虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894570/

相关文章:

c++ - 重载运算符 '<<' 的使用不明确(操作数类型为 'ostream'(又名 'basic_ostream<char>')和 'Person')

c++ - boost gzip_compressor 和 gzip_decompressor

c# - C#获取抽象类当前实例并使用该实例调用具体的子类属性

c++ - 用纯说明符覆盖虚拟函数是否有效?

c++ - 虚方法什么时候应该是纯的?

c++ - 迭代容器或范围 - constness 问题

c++ - 存储对象列表的最佳标准类?

C++ 循环依赖

javascript - 如何正确地使一个构造函数的原型(prototype)属性继承其原始的原型(prototype)属性?

c++ - 纯抽象类和派生类型的实例化