【发布时间】:2018-06-03 19:13:10
【问题描述】:
const_cast 离开一个空的基类并在其上调用非 const 方法是未定义的行为吗?例如
class EmptyBase {
public:
void bar() { ... }
};
class Something : public EmptyBase {
public:
void foo() const {
const_cast<EmptyBase&>(static_cast<const EmptyBase&>(*this)).bar();
}
};
我无法在标准(C++14 和 C++17)中找到相关信息来回答这个问题..
【问题讨论】:
-
你的意思是
EmptyBase::bar();invoid foo() const? -
所以
::bar实际上是一个静态成员函数? -
参见“7.1.6.1 cv-qualifiers”,第 4 句。它给出了例子。
-
@NonStatic 不是真的,已编辑
-
@Lanting ^ 不,一个成员函数
标签: c++ c++14 language-lawyer c++17 const-cast