您的位置:首页 > 其它

16.3节练习

2016-07-02 21:45 302 查看
练习16.48 编写你自己版本的debug_rep函数。

template <typename T> string debug_rep(const T&);
template <typename T> string debug_rep(T*);
string debug_rep(const string&);
string debug_rep(char*);
string debug_rep(const char*);

练习16.49&&16.50 解释下面的每个调用会发生什么?并验证解释原因。
#include <iostream>
#include <string>
using namespace std;
template <typename T>
void f(T)
{
cout << "used f(T)" << endl;
}
template <typename T>
void f(const T*)
{
cout << "used f(const T*)" << endl;
}
template <typename T>
void g(T)
{
cout << "used g(T)" << endl;
}
template <typename T>
void g(T*)
{
cout << "used g(T*)" << endl;
}
int main()
{
int i = 42, *p = &i;
const int ci = 0, *p2 = &ci;
g(42); //g(T)
g(p); //g(T*)
g(ci); //g(T)
g(p2); //g(T*)

f(42); //f(T)
f(p); //f(T)...T的类型为int*,更特例化
f(ci); //f(T)
f(p2); //f(const T*)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: