当使用debug_rep(&s)
调用template <typename T> string debug_rep(T *p)
时,为什么T
不是string*
?
在这个调用中,&s
是一个指向string
对象s
的指针,而不是一个指向指针的指针。因此,T
被推导为string
,而不是string*
。
模板函数debug_rep
的定义中,T
是一个模板参数,它可以代表任意类型。当我们调用debug_rep(&s)
时,编译器会尝试推导出T
的具体类型。根据C++的类型推导规则,如果传入的实参是一个指针,那么推导出的类型将是指针所指向的类型,而不是指针本身的类型。
因此,T
被推导为string
,而不是string*
。这意味着在debug_rep
函数中,p
的类型将是string*
,而不是string**
。
这个问题的答案可以总结如下:
debug_rep(&s)
调用template <typename T> string debug_rep(T *p)
时,T
不是string*
,而是string
。&s
是一个指向string
对象s
的指针,而不是一个指向指针的指针。腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云