《从LRS项目重构来看‘泛型’(一)——追根寻源,看C++中的模板技术简介》

本文深入讲解了C++中的模板概念,包括函数模板和类模板的使用方法,通过具体示例展示了如何利用模板编写与类型无关的代码,提高代码的复用性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在谈泛型这个概念之前,先来回顾一下C++中一个重点内容吧

C++中的模板:

模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。

模板是一种对类型进行参数化的工具;

通常有两种形式:函数模板和类模板;

  函数模板针对仅参数类型不同的函数;

类模板针对仅数据成员和成员函数类型不同的类。

使用模板的目的

  是能够让程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些类型无法实现,要实现这些类型的交换就要重新编写另一个swap函数。使用模板的目的就是要让这程序的实现与类型无关,比如一个swap模板函数,即可以实现int 型,又可以实现double型的交换。模板可以应用于函数和类。

注意:模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。)

咱们重点看一个函数模板的例子吧。

<span style="font-family:KaiTi_GB2312;font-size:18px;">#include <string> 
#include <iostream> 
using namespace std; 
template<typename T> void print(const T& var) 
{     
    cout << var << endl; 
} 
int main() 
{     
    string str("Hello World");     
    const int num=1234; 
    print(str); 
    print(num); 
    return 0; 
} 
//输出:Hello World  
//       1234 </span>

这就是利用了函数模板之后达到的效果,不仅可以输出字符串,还可以输出数字。

小结:

  函数模板在函数具体实例化的时候编译器来决定需要返回和处理的数据类型,极大的提高了编程的灵活性、安全性

提高了代码的复用率!相比较函数重载,我觉得用函数模板这里的代码量更少,而且不容易出错。

步入正题:

  说了那么多C++ 的内容,无非就是想告诉大家,一件事儿。其实,咱们学来学去,还是那些东西,只不过是换了身衣服而已。不信?

请挪步下篇博客从:《从LRS项目重构来看"泛型"(二)——异曲同工,泛型过程和C++函数模板的比较》

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值