本原则还是面向模版类编程而言的。
其实本原则内容主要是针对这么一种情况。你的父类是一个模版类不在编译期是无法具体化的,这样编译器就无法确切得知这个时候的父类具体长成啥样,而一般来讲泛型肯定是要被特化的,就是具体化。你要知道一旦一个东西被具体化它就往往失去了通用性,那么这时你的一个具体的子类要继承一个抽象的模版父类,具体化以后这个具体的子类和这个具体的父类之间能否很好的对接,编译器不敢保证,因此编译器默认的选择拒绝调用父类成员函数。
为了解决这个问题,你就要显式地告诉编译器你就要这么干,于是作者提出三种解决方法。1、使用this指针显式指出;2、使用using声明式;3、父类名+域操作符。
不过如果你调用的virtual函数,这样做会导致virtual的动态绑定行为失败。
但是,我在VS上做了一个实验,就是用一个具体类去继承一个模版类。如果不对子类进行完全特化的话编译根本通不过,而在写语句的时候并没有提出错误或者警告,这说明C++编译器最起码VS是在编译期进行特化的。这说明本原则所讲之方法多多少少有些过时,或者在你不经意间编译器已经帮你拦截了错误。
总结一下作者的观点:
可在子类中通过this或者其他修饰符来显式指定模版父类的成员。