模板
模板是C++中实现泛型编程的核心机制,它允许编写独立于具体数据类型的代码,增强代码复用性。这篇笔记我们对C++中的函数模板和类模板进行简单介绍。
函数模板
下面例子代码我们编写了一个函数模板,它实现了支持泛型的两个元素相加功能。
#include <iostream>
#include <string>
template <typename T> T add(T a, T b) { return a + b; }
int main() {
double sum = add(1.0, 2.2);
std::cout << "Sum: " << sum << std::endl;
std::string str1 = "Hello ";
std::string str2 = "world";
std::string cat = add(str1, str2);
std::cout << "Concatenated: " << cat << std::endl;
return 0;
}
模板使用template关键字定义,<typename T>表示模板使用的一个类型是T,这里的T不是实际类型而是一个类型参数,类型参数可以在函数的参数、返回值和函数体中使用。调用函数模板时,编译器会根据实参自动推导模板类型参数,我们也可以手动明确指定。
double sum = add<double>(1.0, 2.2);
类模板
类模板与函数模板类似,类中的成员数据类型可以使用模板参数指定。
#include <iostream>
#include <string>
template <typename T> class Demo {
public:
T value;
Demo(T value) : value(value) {}
T getValue() { return value; }
};
int main() {
Demo<std::string> demo("Hello");
std::cout << demo.getValue() << std::endl;
return 0;
}
类模板中,我们不能自动推导类型,类型参数需要明确指定。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。