您的位置:首页 > 编程语言 > C语言/C++

Effective C++ 条款46 需要类型转换时请为模板定义非成员函数

2015-09-12 02:13 417 查看
1. 条款24举出一个Rational的例子,来说明为什么只有non-member函数才有能力"在所有实参身上实施隐式类型转换".Rational的定义如下:

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: