以下构造的实际效果是什么:
class Base { /* ... */ };
template<class T>
class Derived : public T { /* ... */ };
int main() {
Derived<const Base> d;
// ...
}
Derived
类只能访问const
- Base
界面的一部分吗?我的第一次测试表明实际上根本没有效果。为什么呢?
谢谢!
答案 0 :(得分:2)
我的猜测是const
会被忽略,因为如果你试着写
class Derived : public const Base
修改强>
frozenkoi在评论中给出了标准的相关部分:
“命名类类型或其cv限定版本的typedef-name(7.1.3)也是类名。如果使用命名cv限定类类型的typedef-name,如果需要类名,则忽略cv限定符。不能将typedef-name用作类头中的标识符。“第9.1节