在 C++ 中,模板似乎是一个非常简单但极其强大的工具。基本思想是将数据类型作为参数传递,从而无需为不同的数据类型编写相同的代码。C++ 模板是 C++ 中增加的一个有用功能。它允许您定义通用类和通用函数,并支持泛型编程。借助通用类型,算法可以以一种与各种数据类型兼容的方式编写。这被称为泛型编程。
在 C++ 中,模板被描述为开发通用类或函数的设计模式或蓝图。为了使算法适用于各种数据类型,泛型编程使用通用类型作为参数。在 C++ 中,模板是一个简单而强大的工具。直接的想法是提供数据类型作为参数,以避免为几种数据类型编写相同代码的必要性。
函数模板是与通用类型通信的独特函数。因此,我们能够创建一个函数模板,其功能可以应用于多种类型或类,而无需为每种类型单独编写整个代码。在 C++ 中,可以使用模板参数来完成此操作。与使用常规函数参数将值传递给函数类似,也可以使用模板参数将类型传递给函数。模板参数是一种参数,可用于传递任何类型的参数。这些函数模板可以像任何其他常规类型一样使用这些参数。
因此,本教程旨在帮助您学习 C++ 中模板的详细信息,例如它们的功能、模板特化、模板库等。要了解更多信息,请继续阅读!
C++ 中的模板是开发通用类或函数的蓝图或公式,这是一个令人兴奋的功能,主要用于泛型编程。简而言之,使用模板可以构建一个可以处理多种数据类型的单个函数或单个类。
C++ 模板是一个非常强大的 C++ 功能,通常被称为泛型函数或类。对于 C++ 中的模板语法,使用“template”一词,以及参数 (t) 中的尖括号,这表示数据类型变量。
与宏类似,C++ 中的模板在编译时展开,使得函数或类可以处理多种数据类型,而无需完全重写。这意味着模板展开主要发生在编译期间。它与宏非常相似。不同之处在于,在展开模板之前,编译器会执行类型检查。这个概念很简单:源代码只包含一个函数或类,而生成的代码可能包含相同函数或类的多个副本。
函数模板:语法
template < class Ttype> ret_type func_name(parameter_list)
{
// body of function.
}
其中 Ttype:Ttype 是函数将用作占位符的数据类型的名称。它在函数定义中使用。它只是一个占位符;编译器将使用实际数据类型代替它。
Class:在模板声明中,通用类型使用 class 关键字指定。
#include <iostream>
using namespace std;
template<class T> T add(T &a,T &b)
{
T result = a+b;
return result;
}
int main()
{
int i =5;
int j =6;
float m = 5.6;
float n = 1.2;
cout<<" The addition of i and j :"<<add(i,j);
cout<<'\n';
cout<<"The addition of m and n :"<<add(m,n);
return 0;
}
输出
The addition of i and j :11 The addition of m and n :6.8
在上面的例子中,我们开发了一个函数模板,它可以添加任何类型的数据,包括 double、float 或 integer。
通过用逗号分隔列表,我们可以在模板函数中使用多个通用类型。
语法
template<class T1, class T2,.....>
return_type function_name (arguments of type T1, T2....)
{
// body of function.
}
如上所示,模板函数可以接受任意数量的不同类型的参数。
#include <iostream>
using namespace std;
template<class X,class Y> void fun(X a,Y b)
{
std::cout << "The Value of a : " <<a<< std::endl;
std::cout << "The Value of b: " <<b<< std::endl;
}
int main()
{
fun(16,14.3);
return 0;
}
输出
The Value of a : 16 The Value of b: 14.3
在上面示例的模板函数中,使用了两个通用类型 X 和 Y。
与函数模板类似,类模板也可以定义。当一个类采用模板的概念时,它被称为泛型类。
语法
template
class class_name
{
.
.
}
Ttype 是一个占位符名称,将在创建类时分配。一个逗号分隔的列表允许我们声明许多通用数据类型。类体可以使用 Ttype。
现在我们将创建一个类的实例。
class_name<type> ob;
其中 class_name:这是类的名称。
type:此术语表示类正在处理的数据类型。
ob: 这是对象的名称。
#include <iostream>
using namespace std;
template<class T>
class A
{
public:
T num1 = 5;
T num2 = 5;
void add()
{
std::cout << "Addition of num1 and num2 : " << num1+num2<<std::endl;
}
};
int main()
{
A<int> d;
d.add();
return 0;
}
输出
Addition of num1 and num2 : 10
在上面的示例中,我们为类 A 开发了一个模板。我们在 main() 方法中创建了类 A 的一个实例,名为“d”。
借助 C++ 模板,您可以开发一组可以管理各种数据类型的类或函数。当需要跨多种类型重用相同的代码时,我们使用模板。以下是使用模板的一些好处