抽象类中受保护的成员变量?

时间:2013-07-20 23:52:54

标签: c++ optimization abstract-class

class A{
public:
    class A() : var1(0)
    {}
    virtual ~A(){};
    virtual void DoMagic() = 0;
protected:
    int var1;
};

我在使用-O优化gcc时遇到了一些问题。然后程序在没有优化的情况下运行良好,但无论级别如何,随机构建都会崩溃。

我有几个带有受保护成员变量的摘要类,如上所示。派生类主动使用此变量。这可能是相关的吗?

我听说Scott Meyers建议反对这种做法,但我找不到参考文本。

这可能是问题的原因吗? 这是有效的c ++吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

我相信你的问题可能就在其他地方。

变化:

void DoMagic() = 0;

为:

virtual void DoMagic() = 0;

还要确保您拥有虚拟析构函数。

virtual ~A( ) { }

派生时,请确保在使用之前从派生构造函数初始化var1。

B::B( ) : var1( 0 ) { }

至于设计,我不知道上下文,在某些情况下它没关系,但我试着避免它。