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

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

我有几个带有受保护成员变量的抽象类,如上所示。派生类积极使用此变量。这可能有关系吗?

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

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

谢谢你。

4

1 回答 1

1

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

改变:

void DoMagic() = 0;

至:

virtual void DoMagic() = 0;

还要确保你有一个虚拟析构函数。

virtual ~A( ) { }

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

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

至于设计,我不知道上下文,在某些情况下还可以,但我尽量避免。

于 2013-07-21T00:18:11.190 回答