gpt4 book ai didi

c++ - 返回类型重载函数? (重访)

转载 作者:搜寻专家 更新时间:2023-10-31 00:03:38 26 4
gpt4 key购买 nike

有人能告诉我编译器在以下两种情况下有什么不同吗?

   #include <cstdio>
using namespace std;

template <typename TReturn, typename T>
TReturn convert(T x)
{
return x;
}

int main()
{

printf("Convert : %d %c\n", convert<int, double>(19.23), convert<char, double>(100));
return 0;
}

int convert(double x)
{
return 100;
}

char convert(double x)
{
return 'x';
}

int main()
{
printf("Convert : %d %c\n", convert(19.23), convert(100)); // this doesn't compile
return 0;
}

第一种情况没有函数重载吗?

最佳答案

当编译器遇到对模板函数的调用时,它会使用模板自动生成一个函数,用作为实际模板参数传递的类型(在本例中为 double)替换每个外观,然后调用它。这个过程由编译器自动执行,对程序员来说是不可见的。因此它也实现了数据的抽象和隐藏。

编译器不会将模板视为普通函数或类。它们是按要求编译的,这意味着模板函数的代码只有在需要时才会编译。

第二个例子没有重载。你拼错了 convert。

关于c++ - 返回类型重载函数? (重访),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5641403/

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