极客班STL与泛型编程 第一周学习笔记
来源:互联网 发布:钢笔淘宝店 编辑:程序博客网 时间:2024/05/29 12:19
泛型编程需注意的问题
续前节template简单分类
http://blog.csdn.net/s_tangbao/article/details/52212147
模板是指允许函数或类(对象)通过泛型的形式进行表现或运行。对应不同的型别(types),都可以正常工作,而无需每个型别一套程序。
实例化分为显式实例化和隐式实例化,显示实例化是指在代码中明确指明使用哪种类型进行实例化,例如前节中complex<double> c1(1.1,2.2);
隐式实例化是在首次使用时根据具体情况使用一种合适的型别进行实例化。
- ① <>内部 typename 与 class 通用,但是此处struct不可以替换class。
template<class T>inlineconst T& min(const T&a,const T&b){}
等价于
template<typename T>inlineconst T& min(const T&a,const T&b){...}
- ②模板在实例化之前,要检查模板代码本身有没有语法错误;实例化期间,也要检查对模板代码的调用是否合理。
- 比如前节中min模板,本身没有语法问题后,在实例化时要考虑调用是否能够完成,模板中利用了operator<,故在使用min模板的类T中要考虑是否能够正确执行operator<。
- ③不允许自动类型转换,模板参数必须是严格匹配的。
- 对于
min(1,2.0);
,错在于我们设定的min模板两个参数是一样的,对于不同参数,由于不能进行自动类型转化而无法执行。
可改为显式指定T型别min<double>(1,2.0);
或强制转换参数型别min(static_cast<double>(1),2.0);
- ④当非模板函数与模板函数并存,且都满足函数需求时,调用非模板函数,而不是从模板函数生成实例。
- ⑤类模板的成员函数的声明(复制构造函数除外)与定义,如果当中要用到本类模板类型,则要写全名。
- 例如
- ⑥特例化后的具体实现可以与主模板不同,例如
- ⑦类模板可进行偏特化和设置默认参数类型
- 类此于普通的函数构造,类模板也可以进行默认参数类型设定;而进行偏特化即部分参数特化而部分参数使用泛型。
0 0
- 极客班STL与泛型编程 第一周学习笔记
- STL与泛型编程-第一周笔记-Geekband
- Boolan STL与泛型编程 第一周笔记
- Boolan STL与泛型编程 第一周笔记
- GeekBand笔记-《STL与泛型编程 》 第一周
- Geekband STL与泛型编程 第一周笔记 暗影行者
- STL与泛型编程第一周作业
- Geekband STL与泛型编程 第一周作业
- Geekban极客班 C++ STL与泛型编程 第一周作业
- Boolan STL与泛型编程 第四周笔记
- GeekBand笔记-《STL与泛型编程 》 第四周
- 泛型编程与STL学习笔记之迭代器
- 泛型编程与STL学习笔记之容器
- 泛型编程与STL学习笔记之算法
- Boolan-C++开发工程师-泛型编程-第一周笔记
- 第一周学习笔记
- PHP编程学习第一周
- 泛型编程与STL学习-iterators
- 【置顶】linux你需要记忆的文件及其作用
- 即见即听即所得,网页视频音乐下载利器-收费音乐免费下
- NDK 一步一步了解jni
- phpexcel无法读取
- u3D开发学习之路--创建多层血条脚本
- 极客班STL与泛型编程 第一周学习笔记
- leetcode 4 (知识点:stl:vector ,iterator )
- POJ 2387 Til the Cows Come Home
- win32 常用宏定义
- android textview 显示html方法解析
- bugfree移植问题
- linux线程栈的若干思考
- java 小技巧 利用for循环反转字符串
- 为什么sql里面not in后面的子查询如果有记录为NULL的,主查询就查不到记录