|
本帖发表于 2016-10-17 16:21:59...阅读 150 人...加油,亲爱的楼主:[db:作者]
函数模板(function template)重载, 即实例化特定的模板, 确定T的类型, 选择匹配度最高的一个;
需要注意传递的具体类型, 如传递的是"&s", 则表示"string* t = &s", 即实际匹配的类型为"string* t";
当非函数模板和函数模板匹配度相同时, 优先选择非函数模板;
调用模板时, 一定要注意顺序, 或者提前声明, 以保证可以找到函数模板, 进行实例化;
具体参见代码注释, 代码如下:
/*
* cppprimer.cpp
*
* Created on: 2013.11.28
* Author: Caroline
*/
/*eclipse cdt, gcc 4.8.1*/
#include [i]
#include
#include
#include [u]
using namespace std;
template
std::string debug_rep (const T &t)
{
std::ostringstream ret;
ret
std::string debug_rep (T *p)
{
std::ostringstream ret;
ret string*
// string* t = T* t, 即 T->string; 所以选择第二个
std::cout
输出:
"hi"
pointer: 0x22fec4 hi
pointer: 0x22fec4 hi
const "hello world"
作者:csdn博客 Spike_King
更多精彩内容:http://www.bianceng.cn/Programming/cplus/
|
|