文章目录
条款41:了解隐式接口和编译多态性
请记住
- 类和模板都支持接口和多态。
- 类的接口是显式的,多态由virtual函数提供,发生于运行期。
- 模板的接口是隐式的,基于有效表达式,多态在编译期完成。
我的理解
模板的接口是隐式的,它在编译期完成
条款42:了解typename的双重意义
请记住
- 声明template时,前缀关键字class和typename可以互换。
- 在函数体中,请用typename声明嵌套从属类型名。
我的理解
在函数体中,要用typename声明嵌套从属类型名,不然编译器不知道它到底是个类型,还是别的什么。
条款43:学习处理模板化基类内的名称
请记住
- 在派生模板类需要调用模板基类的函数时,加上this->
我的理解
照做就行了,不照做编译通过不了
条款43:学习处理模板化基类内的名称
请记住
- 在派生模板类需要调用模板基类的函数时,加上this->
我的理解
照做就行了,不照做编译通过不了
条款44:将与参数无关的代码抽离templates
请记住
- Template生成多个classes与多个函数,所以任何template代码都不该与某个造成膨胀的template参数产生相依关系。
- 因非类型模板参数而造成的代码膨胀,往往可以消除,做法是以函数参数或者class成员变量替换template参数。
- 因类型而造成的代码膨胀,也可以降低,做法是让带有完全相同二进制表述的具现类型共享实现码。
我的理解
确实如此
本文探讨了C++中的隐式接口和编译时多态性,强调模板的接口不同于类的显式接口,它是基于类型的。同时解释了typename的双重意义,不仅用于模板声明,还用于解决嵌套从属类型名的解析问题。此外,介绍了如何在模板派生类中正确调用基类成员。最后,文章提到了避免模板代码膨胀的策略,通过分离与模板参数无关的代码来优化编译结果。
7055

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



