C++—模板
定义
在 C++ 中,模板(Template)是一种通用的编程工具,允许程序员编写泛型代码,使得类或函数能够适****用于多种不同的数据类型而不需要重复编写相似的代码。C++ 提供了两种主要类型的模板:类模板和函数模板。
类模板
类模板允许定义通用的类,其中某些类型可以作为参数。这样的类可以处理不同类型的数据,而不需要为每个数据类型编写单独的类。
// 定义一个通用的类模板
template <typename T>
class MyTemplate {
private:
T data;
public:
MyTemplate(T d) : data(d) {}
T getData() {
return data;
}
};
int main() {
// 使用类模板创建对象
MyTemplate<int> intObject(5);
MyTemplate<std::string> stringObject("Hello");
// 调用类模板中的函数
std::cout << intObject.getData() << std::endl; // 输出 5
std::cout << stringObject.getData() << std::endl; // 输出 Hello
return 0;
}
#include <iostream>
using namespace std;
class PrintInt
{
private:
int data;
public:
void printInt();
void setInt(int data);
};
void PrintInt::printInt()
{
cout<<data<<endl;
}
void PrintInt::setInt(int data)
{
this->data=data;
}
class PrintString
{
private:
string data;
public:
void printString();
void setString(string data);
};
void PrintString::printString()
{
cout<<data<<endl;
}
void PrintString::setString(string data)
{
this->data=data;
}
template<typename T>
class PrintEvthing
{
private:
T data;
public:
void printEvthing()
{
cout<<data<<endl;
}
void setEvthing(T data)
{
this->data=data;
}
};
int main()
{
PrintInt p1;
p1.setInt(100);
p1.printInt();
PrintString p2;
p2.setString("xie");
p2.printString();
PrintEvthing<int> p3;
p3.setEvthing(1000);
p3.printEvthing();
PrintEvthing<string> p4;
p4.setEvthing("xxxxxx");
p4.printEvthing();
return 0;
}
函数模板
函数模板允许编写通用的函数,可以处理多种不同类型的数据。
// 定义一个通用的函数模板
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
// 使用函数模板调用通用函数
int result1 = add(5, 10);
double result2 = add(3.5, 2.7);
// 定义一个通用的函数模板
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
// 使用函数模板调用通用函数
int result1 = add(5, 10);
double result2 = add(3.5, 2.7);
// 输出函数模板调用结果
std::cout << "Result 1: " << result1 << std::endl; // 输出 Result 1: 15
std::cout << "Result 2: " << result2 << std::endl; // 输出 Result 2: 6.2
return 0;
}
模板提供了一种在编写代码时更具通用性的方法,能够处理不同类型的数据而无需为每种类型编写特定的函数或类。通过使用模板,可以提高代码的重用性和可维护性。