C++模板编程中的几个关键问题解析
1. .template 构造的使用
在某些模板代码中,会出现 .template 这样奇怪的构造。若不额外使用 template ,编译器可能无法识别后续的小于号 < 并非“小于”运算符,而是模板参数列表的开始。不过,这一问题仅在句点前的构造依赖于模板参数时才会出现。例如,若某个参数依赖于模板参数 N ,就可能遇到此问题。
总结来说, .template 表示法(以及类似的 ->template 表示法)仅应在模板内部使用,且只有当它们跟在依赖于模板参数的内容之后时才使用。
2. this-> 的使用
对于带有基类的类模板,直接使用名称 x 并不总是等同于 this->x ,即便成员 x 是继承而来的。以下是一个示例:
template <typename T>
class Base {
public:
void bar();
};
template <typename T>
class Derived : Base<T> {
public:
void foo() {
bar(); // calls external bar()
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



