函数模板实例化
手写的话观赏效果可能更好 手写的话观赏效果可能更好我不赞同这一点{:10_277:} 歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点
+1 歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点
+1 liuhongrun2022 发表于 2023-5-28 14:00
+1
@ChatGPT 你懂的{:10_256:} liuhongrun2022 发表于 2023-5-28 14:00
+1
{:10_257:}还真有一个叫chatgpt的鱼油 歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点
OK,有问题我就解决,再发一遍,还请务必来捧场 歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点
歌兄,我又发了这个问题一遍,能回答的话,两次悬赏都交于您 老沫白 发表于 2023-5-28 14:50
歌兄,我又发了这个问题一遍,能回答的话,两次悬赏都交于您
{:10_257:}{:10_301:} 对于第一个调用func(ps),由于ps是一个const string *类型,所以使用const T &t模板参数,T被推导为const string *类型,进而将func实例化为string * const &func(const string *&)。这里的引用是底层const的,因为我们传入的是一个指向常量字符串对象的地址,所以被绑定的类型是该指针的顶层const属性被忽略了。
对于第二个调用func(&s),由于s是一个string对象,取它的地址得到的是一个const string *类型的指针。同样使用const T &t模板参数,T被推导为const string *类型,进而将func实例化为const string *&func(const string *&)。在这种情况下,我们的指针是一个非常量指针,但是在传递给func时,它会被转化为指向常量对象的指针,即底层const。因此,推导出来的模板参数为const string *,而函数参数类型为const string *&,其中的引用是指向指针的引用,即指针本身是引用类型,而且是底层const引用。
页:
[1]