返回信息流在《C++ Primer》615页中,有两个重载模板:
template<typename T> string debug_rep(const T&t);
template<typename T> string debug_rep(T *p);
考虑下面的调用:
const string s = "hi";
cout << debug_rep(&s) <<endl;
书上说这两个模板都是可行的,其中第一个模板为:debug_rep(const string*&),T绑定到string*。
但是我感觉T应该为const string*,求大神指点
这是一条镜像帖。来源:北邮人论坛 / cpp / #89844同步于 2016/1/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
c++ Primer重载与模板
d1264003247
2016/1/9镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
你应该把T看作一个整体来考虑,类似于类型别名。T为const string*说明T为一个指向常量string的指针,所以const T的const说明这个T为const,即这个指针为const,也就是常量指针。不能单纯的把T替换为const string*
【 在 xiaobing307 的大作中提到: 】
: T如果绑定到const string*,第一个模板岂不是const const string* &,不是有两个const了么