Effective C++ 条款46 需要类型转换时请为模板定义非成员函数
2015-09-12 02:13
417 查看
1. 条款24举出一个Rational的例子,来说明为什么只有non-member函数才有能力"在所有实参身上实施隐式类型转换".Rational的定义如下:
View Code
许多编译器为了实行template具现化,要求把template定义式放在头文件内,因此可能需要在头文件内定义doMultiply,但doMultiply可以不为inline.
template<typename T> const Rational<T> doMultiply(const Rational& lhs, const Rational& rhs){ ... } template<typename T> class Rational{ public: friend Rational operator*(const Rational& lhs, const Rational& rhs){ doMultiply(lhs,rhs); ... };
View Code
许多编译器为了实行template具现化,要求把template定义式放在头文件内,因此可能需要在头文件内定义doMultiply,但doMultiply可以不为inline.
相关文章推荐
- “输出下一秒”
- c语言中的指针(包括数组与指针相关)
- C++ <文本文件的加密与解密>
- 第十篇:C++中乘除连续运算出问题了
- PHP比C/C++或Java少了什么?多线程,多线程,多线程……
- Effective C++ —— 构造/析构/赋值运算(二)
- C/C++重要知识点总结
- 腾讯的C++面试真有趣
- C++内存布局
- c语言中对于文件操作的一些学习
- 基于C语言的万年日历
- 求解 s = (1*1)!+(2*2)! + (3*3)!+...+(n*n)! (C语言)
- 腾讯面试题总结,似乎是面试C++方向的(小巫总结)
- 第三讲:C++基础语法 & 创建第一个场景 ------学习笔记
- 【leetcode】Largest Number --C++
- 黑马程序员——ios开发基础之C语言预处理命令与文件操作
- 黑马程序员——ios开发基础之C语言之进制转换、位运算与内存管理
- 黑马程序员——ios开发基础之C语言数组、指针与结构体
- 项目11.5 坐标转换
- 黑马程序员——ios开发基础之C语言程序结构分类与函数