C++学习之模板:模板重载
来源:互联网 发布:高级美工培训 编辑:程序博客网 时间:2024/06/01 13:16
对模板的重载,两个函数模板分别获得对象对应的字符串或者对应的指针的值和指针所指对象的值.
template<typename T>string debug_rep(const T& t){ ostringstream ret; ret << t; return ret.str();}template<typename T>string debug_rep(T* p){ ostringstream ret; ret << p; if (p) ret << " " << debug_rep(*p); else ret << "null pointer"; return ret.str();}int main(){ string s("hi"); char c[] = { 'I','a','m' }; cout<<debug_rep(c); return 0;}
多个可行模板,将选择更加特例化的版本.这是因为const T&理论上可以任何类型,我们无法将它与const T*区分开来.例如:
string s("hi"); const string* sp = &s; cout<<debug_rep(sp);//会选择第二个版本,因为它更特例化
非模板和重载
string debug_rep(const string&s){ return '"' + s + '"';}int main(){ string s("hi"); const string* sp = &s; cout<<debug_rep(s);//选择非模板版本 return 0;}
重载模板和类型转换.当我们使用c类型的字符串指针时,对于版本1不会发生数组到指针的转换(引用),T被绑定到char[],对于版本2发生转换,则T被绑定到const char.这会发生一次类型转换,这种转换时被认为精确匹配的.而第三种则不是精确匹配.根据特例化的规则,会选择第二个.
0 0
- C++学习之模板:模板重载
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C/C++学习之模板
- (C/C++学习笔记)函数模板遇上函数重载
- c++学习之函数模板应用和重载
- 学习笔记之使用类模板遇到的重载问题
- c++学习之模板模板
- C++Template学习笔记之函数模板
- 从零开始学C++之模板(一):函数模板、函数模板特化、重载函数模板、非模板函数重载
- 从零开始学C++之模板(一):函数模板、函数模板特化、重载函数模板、非模板函数重载
- C++template ;模板学习
- 【足迹C++primer】60、重载和模板
- c++STL(一)重载与模板。
- C++--模板遇上运算符重载
- c++模板重载之字符串模板库的简单实现
- 学习C++模板---模板函数
- C++函数模板重载学习笔记
- markdown模板
- leetcode_First Bad Version
- IOS数据持久性保存之CodeData的使用
- 函数(栈)帧
- 传智播客javase总结 8
- C++学习之模板:模板重载
- 有趣的单精度浮点数(float)
- ThreadLocal类详解与源码分析
- 组合测试法中的全对偶测试法
- OC基础-ARC和MRC的理解及应用
- HDOJ--1262--寻找素数对
- 延迟加载之ViewStub
- Linux 中如何查询和卸载已安装的软件
- 跳台阶问题 + 变态跳台阶问题 解法(动态规划递归 + 非递归)