gpt4 book ai didi

c++ - 为什么在 C++ 中使用关系运算符创建的模板函数不能正确处理字符串?

转载 作者:行者123 更新时间:2023-11-27 22:32:22 25 4
gpt4 key购买 nike

这是一个简单的代码,返回两个输入中的最大值,以练习在 C++ 中使用模板函数。代码将输出打印为“Hello”,这是错误的,当我们取消注释行 {string s = "Hello";} 时,输出变得正确,即使使用的“Hello”不是 s。 The screenshot of code run

#include <iostream>
using namespace std;
template <typename T>
T maxx(T a, T b)
{
if (a>b) {return a;}
return b;
}

int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
// string s = "Hello";
cout<<maxx("Hello","World")<<"\n";
return 0;
}

最佳答案

由于这次调用,模板函数的模板参数被推导为const char *

maxx("Hello","World")

因此比较指向字符串文字的第一个字符的指针。比较的结果取决于编译器将文字放入文字池的顺序。

关于c++ - 为什么在 C++ 中使用关系运算符创建的模板函数不能正确处理字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59346930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com