对于具有基类的类模板,自身使用名称x并不一定等同于this->x
。即使该类x是从基类继承获得的,也是如此。例如:
在这个例子中,在foo()内部决定要调用哪一个exit()时,并不会考虑基类Base中定义的exit()。因此,会出错或者调用系统库中的exit();
规则:对于那些在基类中声明,并且依赖于模板参数的符合(函数或者变量等),你应该在它们前面使用this->或Base<T>::
。如果希望完全避免不确定,你可以(使用比如this->和Base<T>::
等)限定(模板中)所有的成员范围