我有一个类层次结构,其中每个类都有一个方法compute
,它将触发一些(重新)计算。该方法是一个虚方法(在基类中它是纯虚方法)。在某些情况下,我想从构造函数中调用此方法以立即设置实例。
当然,这很危险。 Eclipse CDT Code Analysis发出错误“在构造函数中调用虚拟方法可能导致崩溃和意外行为”。我了解错误消息及其原因。请,请not告诉我为什么应该避免这种情况!!
为了使错误消息和(更重要的)消除错误的可能性,我引入了一个作用域解析运算符。因此,构造函数现在看起来像这样:
MyClass::MyClass()
{
MyClass::compute();
}
我希望这绝对是安全的。但是Eclipse代码分析继续显示错误消息。为什么?不可能调用意外的方法。如果该方法在MyClass
中是纯虚拟的,则编译器会告诉我。
这是Eclipse代码分析错误还是我缺少什么?
编辑:范围解析运算符应该抑制虚拟解析。因此,我希望它可以防止警告中提到的所有可能的错误。我的假设是真的吗?
我想从评论/聊天中总结出最重要的观点: