c++ - 函数重载与函数模板 - C++

标签 c++ templates overloading

在有关 C++ 的书籍中,为什么在 C++ 中有模板可供我们使用时,我们要使用函数重载

展示模板的有效(和正确)使用不是更好吗?与大多数 C++ 书籍中教授函数重载的地方相反?

或者,是否有充分的理由使用其中一个而不是另一个?

最佳答案

当您想对可能不同的类型执行相同的操作时,模板提供了一个优势。一个简单的例子:

template <typename T>
T foo(const T& a, const T& b) { return a + b; }

当你想根据类型应用不同的操作时,你可以使用重载:

struct Foo{ void foo() const {} };

void foo(int i) { std::cout << "i = " << i << "\n"; }
void foo(const Foo& f) { f.foo(); }

您可以使用模板和模板特化来实现上述目的,但这种特化应该代表一般情况下的一些异常(exception)情况。

关于c++ - 函数重载与函数模板 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12331655/

相关文章:

css - 电子邮件模板在 hotmail 中不显示背景图片

python - OpenCV-Python 中的模板匹配错误

c++ - 为什么 std::bitset 只取 constexpr 值?

C++调用基类方法切片对象

Java 类型转换、对象类型和重载问题

c++ - 全屏小部件

c++ - 我正在寻找围绕内置 Perl 函数的 C++ 包装器

c++ - 将 mp4 解码为原始帧 Windows C++

c++ - 如何为模板类重载 << cout?

c++ - 如何返回从inflate()返回解压后的数据实际消耗了多少字节?