美文网首页
【笔记】C++的150个建议,第五章

【笔记】C++的150个建议,第五章

作者: NeilXu | 来源:发表于2020-01-12 23:04 被阅读0次

目录
第一部分 语法篇

  1. 第一章 从C继承而来
  2. 第二章 从C到C++
  3. 第三章 内存管理
  4. 第四章 类
  5. 第五章 模板

建议60:动多态与静多态

  1. 动多态:
  • 通过继承、虚函数、指针或引用实现。
  • 晚绑定
  • 追求接口与实现分离,让不同的实现代码应用于相同的场合(调用相同的函数实现不同的功能)
  1. 静多态:
  • 通过模板实现
  • 早绑定
  • 追求算法或代码可复用,让相同的代码应用于不同的场合

建议61:将模板的声明和定义防止在同一个头文件里

由于模板类型不是一种实类型,它必须等到类型绑定后才能确定最终类型。
编译器需要根据模板的定义去生成对应的代码。

三种解决方法,推荐方法1

  1. 将模板的定义放在.h文件中。缺点是会变成inline函数,导致代码膨胀。
  2. 定义还是放在.cpp文件中,引用时,#include "xxx.cpp"。缺点是,有的编译器不支持。
  3. 使用关键字export。缺点是,性能太次,有的编译器不支持。
export template<class T>
void output(const T& t){
    std::cout << t;
}

建议62:用模板代替参数化的宏函数
因为宏定义有两个重要的缺点:缺乏类型检查、替换时容易出错。

建议63:函数模板vs.模板函数,类模板vs.模板类

  • 函数模板:用来生产函数的模板
  • 模板函数:用模板生成的函数,指由函数模板生成的具体函数
  • 类模板与模板类:同上。

其实这4个名词就是几个术语而已,没什么太大意义。

建议64:继承vs.模板

相关文章

网友评论

      本文标题:【笔记】C++的150个建议,第五章

      本文链接:https://www.haomeiwen.com/subject/yniwactx.html