调用重载函数时,函数返回值类型不在参数匹
,只有函数名、参数个数和参数类型被检查。
### 8.5 函数模板
函数模板是一种特殊的函数定义,它使用一个或多个类型参量,以便能够适用于不同的类型。使用函数模板时,必须在函数名前加上关键字template。
#### 8.5.1 简单的函数模板
``` c++
template <typename T> // 函 数 模 板 声 明
T max(T a, T b) // 该 函 数 返 回 a 和 b 中 的 最 大 值
{ return (a > b ? a : b); } // 该 语 句 需 要 C++11 或者之后版本才能使用三元运算符: ?:
int main() { double x = max(1, 3.14); cout << x << endl; return 0; } // 由于max()是一个泛型函数,因此x的类型也会根据max()的参量决定;这里x将会是double类型
template <typename T> // 重载max()函数(不要忘记加上template关键字)
T max(T a, T b, T c) { return (a > b ? (a > c ? a : c) : (b > c ? b : c)); }
int main() { double y = max(1, 4.2, 5.6); cout << y << endl; return 0; }//y将会是double类型
template <typename T>// 重贴max()出版 (不要忘认加上template关键字)
T max(const vector<T>& v) { if (!v.empty()) { auto result = v[0]; for (auto it = v.begin(); it != v.end(); ++it) if (*it > result) result = *it; return result; } else throw invalid_argument("empty vector");}
int main(){ vector<double> dv{ 1, 4.2, 5 }; double z=max(dv); cout<<z<<endl; return 0;}//z将会是double类型
AI智能问答网免责声明:
以上内容除特别注明外均来源于网友提问、ChatGPT回答,权益归原著者所有,本站仅作效果演示和欣赏之用;
若以上展示有冒犯或侵害到您,敬请联系我们进行删除处理,谢谢!