phl*_*psy 9 c++ const derived-class
以下构造的实际效果是什么:
class Base { /* ... */ };
template<class T>
class Derived : public T { /* ... */ };
int main() {
Derived<const Base> d;
// ...
}
Run Code Online (Sandbox Code Playgroud)
Derived该类是否只能访问const接口的-part Base?我的第一次测试表明实际上根本没有效果.为什么?
谢谢!
我的猜测是被const忽略,因为如果你尝试写
class Derived : public const Base\nRun Code Online (Sandbox Code Playgroud)\n\n该程序无法编译。
\n\n编辑:
\n\nfreezekoi在评论中给出了标准的相关部分:
\n\n\n\n“命名类类型或其 cv 限定版本的 typedef-name (7.1.3) 也是类名。如果使用命名 cv 限定类类型的 typedef-name,其中类- name 是必需的,cv 限定符被忽略。typedef-name 不得用作类头中的标识符。” \xc2\xa79.1
\n