gpt4 book ai didi

c++ - 为什么 std::string 关系运算符比较结果对于模板和函数是不同的?

转载 作者:行者123 更新时间:2023-12-05 09:02:01 27 4
gpt4 key购买 nike

在下面的代码中,模板和函数都比较两个字符串并返回哪个更大。然而,尽管代码(定义体)相同,结果却不同。现在,它可能与采用字符串与字符串有关(这是 C++ 错误吗?)——但为什么模板有区别?

#include <iostream>
#include <string>

std::string getBiggerStr(std::string a, std::string b);

template <class T>
T getBigger(T a, T b);

int main() {
std::cout << "\t" << getBiggerStr("Amber", "John") << std::endl;
std::cout << "\t" << getBigger("Amber", "John") << std::endl;

return 0;
}

std::string getBiggerStr(std::string a, std::string b) {
if(a > b) return a;
return b;
}

template <class T>
T getBigger(T a, T b) {
if(a > b) return a;
return b;
}

结果:

        John
Amber

为什么不一样?模板定义主体是从函数复制粘贴的!

最佳答案

getBigger("Amber", "John")电话 getBigger<const char*>它返回哪个内存地址是更大的数字。

关于c++ - 为什么 std::string 关系运算符比较结果对于模板和函数是不同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72226792/

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