C++高级学习:第一节-模板基础

[微信公众号:Cpp入门到精通]有完整六十六节知识,STL知识总结,欢迎关注学习!!

模板是一种通用编程工具,允许您编写泛型代码,这样您就可以在不同类型的数据上使用相同的算法或数据结构。模板是一种泛型编程的具体实现,泛型编程是一种通过参数化类型的方式,使得算法和数据结构可以独立于特定的数据类型。


template<typename T>

typename可以改写成class,它们都用于声明模板参数,用于表示类型参数。在一般情况下,typename更明确且更通用。T并不是一个关键字,而是一个通用的占位符,表示“Type”(类型)。这里用T是一种命名惯例,用于表示任意数据类型,在实例化模板时会被具体的数据类型替代。你也可以定义你想要的表示方法。


模板主要有两种类型:函数模板和类模板。

函数模板通过在声明或定义函数时使用模板参数来实现,这些模板参数可以用来表示任意数据类型,这允许您编写可以处理不同数据类型的通用函数。


函数模板的基本语法如下所示(parameter含义为参数):

template <typename T>
void myFunc(T parameter) {
    // 函数主体
}

 下面我们给一个交换函数模板的例子:


#include<iostream>
using namespace std;
template <typename T>
void Swap(T& a, T& b) {
  T temp = a;
  a = b;
  b = temp;
}
int main() {
  int m = 5, n = 10;
  Swap(m, n);
  cout << "m=" << m << " " << "n=" << n << endl;
  double x = 3.14,y = 12.23;
  Swap(x, y);
  cout << "x=" << x << " " << "y=" << y << endl;
  system("pause");
  return 0;
}

Swap是一个函数模板,它接受两个参数引用,并交换它们的值。编译器会根据传递的参数类型推导出模板参数 T 的具体类型,从而生成对应的函数实例。

结果如下:


m=10 n=5
x=12.23 y=3.14

类模板通过在类的声明或定义中使用模板参数来实现,这些模板参数用于表示任意数据类型,这允许您定义通用的类,其中的成员变量和成员函数可以使用不同类型的参数。


类模板的基本语法如下所示:


template <typename T>
class MyClass {
public:
    T Value;//成员变量
    void myFunc(T parameter) {
        // 函数主体
    }//成员函数
};

下面我们给一个类模板的例子:


#include<iostream>
using namespace std;
template <typename T>
class class1 {
public:
  T data;
  T getdata() {
    return data;
  }
};
int main() {
  //实例化class1,参数类型为int,实例化对象名为c1
  class1<int>c1;
  c1.data = 10;
  cout << "data=" << c1.getdata() << endl;
  //实例化class1,参数类型为double,实例化对象名为c2
  class1<double>c2;
  c2.data = 12.23;
  cout << "data=" << c2.getdata() << endl;
  system("pause");
  return 0;
}

请重点关注我们如何在主函数中模板实例化,格式怎么写。通过实例化模板,您可以为特定的数据类型创建通用的类。在实例化时,模板参数被具体的类型替代,从而生成实际的类定义。


data=10
data=12.23

 

 

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值