老沫白 发表于 2023-5-28 10:57:33

函数模板实例化

手写的话观赏效果可能更好

歌者文明清理员 发表于 2023-5-28 10:57:34

手写的话观赏效果可能更好
我不赞同这一点{:10_277:}

石云 发表于 2023-5-28 13:21:34

歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点

+1

liuhongrun2022 发表于 2023-5-28 14:00:25

歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点

+1

歌者文明清理员 发表于 2023-5-28 14:19:41

liuhongrun2022 发表于 2023-5-28 14:00
+1

@ChatGPT 你懂的{:10_256:}

歌者文明清理员 发表于 2023-5-28 14:20:13

liuhongrun2022 发表于 2023-5-28 14:00
+1

{:10_257:}还真有一个叫chatgpt的鱼油

老沫白 发表于 2023-5-28 14:22:29

歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点

OK,有问题我就解决,再发一遍,还请务必来捧场

老沫白 发表于 2023-5-28 14:50:39

歌者文明清理员 发表于 2023-5-28 12:57
我不赞同这一点

歌兄,我又发了这个问题一遍,能回答的话,两次悬赏都交于您

歌者文明清理员 发表于 2023-5-28 14:51:13

老沫白 发表于 2023-5-28 14:50
歌兄,我又发了这个问题一遍,能回答的话,两次悬赏都交于您

{:10_257:}{:10_301:}

歌者文明清理员 发表于 2023-5-28 14:53:21

对于第一个调用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]
查看完整版本: 函数模板实例化