c++ - 来自基本 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 调用这个函数。)
解决方案
如果您从基类构造函数调用虚拟方法,您将获得基类方法,而不是任何覆盖的方法。
(实际上,根据具体情况,它可能是未定义的行为,但这是通常的实际效果)。
推荐阅读
- asp.net-mvc - 无效操作异常:MVC
- rust - 在 Rust 中,为什么 `void*` 是 `*mut c_void` 而不是 `*mut ()`?我可以使用 `*mut ()` 安全地表示 `void*` 地址吗?
- java - 如何从 txt 文件中打印特定数字?
- php - 为什么我的 $_SESSION 超级全局变量不能跨多个页面持久化?
- c++ - 有没有比使用蛮力更快的方法来对向量执行加权平均?
- .net - Error Swagger Ambiguous HTTP 操作方法
- statistics - 试图排除占星术但出了点问题
- java - 有没有办法拒绝 jar 启动但只允许启动器(.exe)启动它?
- windows - 无法删除部分子项。这可能是因为进程打开了文件或将其工作目录设置在目标目录中
- javascript - 在 React 中迭代网格和卡片中的值