C++中模板的原理是什么?

wam*_*amp 3 c++ templates

哪个模板库应该是新手初学者?

不确定操作系统是否重要,如果重要的话,我正在谈论Windows.

Don*_*alo 5

模板都是关于泛型编程的.这个概念就像:你定义一个函数体/类,它可以处理任何类型的数据(具有一些属性,比如定义的特定运算符).考虑您正在编写一个函数,它将返回给定参数的总和:

int sum(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

现在您希望该函数也适用于字符串.但你不能做到以下几点:

std::string s1 = "abc", s2 = "def";
std::string s = sum(s1, s2);
Run Code Online (Sandbox Code Playgroud)

对于此sum()调用,您需要定义另一个版本sum().模板将保存您的工作.只需sum()按以下方式编写定义:

template<typename T>
T sum(const T& a, const T& b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

现在,该函数sum()将适用于operator+已定义的任何数据类型.

编辑

如果你想成为一名C++程序员,首先需要学习STL(标准模板库).

  • @wamp:编译器将为您使用该模板的所有类型生成一个函数体. (2认同)