首页 > 解决方案 > 来自基本 ctor 的纯虚拟“非常 const”函数调用

问题描述

我知道禁止从基本 ctor 调用虚拟函数,这是有原因的。但是,如果 func 是“非常 const”,我认为,这些原因变得无关紧要。“非常 const” 表示该函数直接替换为常量,如下所示:

Color Derived::getColor() const
{
    return Color(0, 255, 0); // no member usage, no member function calls -
                             // only return
}

(我使用函数是因为我需要它的虚拟性。)我可以告诉编译器这个函数是“非常常量”吗?(它允许我从 ctor 调用这个函数。)

标签: c++constructorvirtual-functionsfunction-call

解决方案


如果您从基类构造函数调用虚拟方法,您将获得基类方法,而不是任何覆盖的方法。

(实际上,根据具体情况,它可能是未定义的行为,但这是通常的实际效果)。


推荐阅读