栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Effective C++ -- 模板与泛型编程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Effective C++ -- 模板与泛型编程

41、了解隐式接口和编译期多态

---- classes 和 templates 都支持接口(interfaces)和多态(polymorphiism)。

---- 对classes 而言接口是显示(explicit),以函数签名为中心。多态则是通过virtual函数发生于运行期。

---- 对template 参数而言,接口是隐式的(implicit),奠基于有效表达式。多态则是通过template 具现化和函数重载解析(function overloading resolution)发生于编译期。

42、了解typename的双重意义

---- 声明template参数时,前缀关键字class和typename可互换

---- 请使用关键字typename标识嵌套从属类型名称;但不得在base class lists(基类列)或member initialization list (成员初值列)内以它作为base class装饰符

43、学习处理模板化基类内的名称

---- 可在derived class templates 内通过 “this->” 指涉及base class templates 内的成员名称,后借由一个明白写出的“base class资格修饰符”完成

44、将与参数无关的代码抽离 templates

---- Templates 生成多个 classes 和多个函数,所以任何template 代码都不该与某个造成膨胀的template参数产生相依关系

---- 因非类型模板参数(non-type template parameters)而造成的代码膨胀,往往可消除,做法是以函数参数或class成员变量替换template参数

---- 因类型参数(type parameters)而造成的代码膨胀,往往可降低,做法是让带有完全二进制表述(binary representations)的具体表现类型(instantiation types)共享实现码

45、运用成员函数模板接受所有兼容类型

---- 请使用 member function templates(成员函数模板)生成 “可接受所有兼容类型”的函数

---- 如果你声明 member templates 用于 “泛化构造”或“泛化 assignment 操作”,你还是需要声明正常的copy构造函数和copy assignment 操作符

46、需要类型转换时请为模板定义非成员函数

---- 当我们编写一个 class template, 而它所提供的“与此template相关的”函数支持“所有参数之隐式类型转换”时,请将那些函数定义为“class template”内部的friend函数

47、请使用traits_classes表现类型信息

---- Traits classes 使得“类型相关信息”在编译期可用。它们以templates和“templates 特化”完成实现

---- 整合重载技术(overloading)后,traits classes 有可能在编译期对类型执行if...else测试

48、认识 template 元编程

---- Template metaprogramming(TMP 模板元编程)可将工作由运行期移到编译期,因而得以实现早期错误侦测和更高的执行效率。

---- TMP 可被用来生成 “基于政策选择组合”的客户定制代码,也可以用来避免生成某些特殊类型并不合适的代码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号