行业知识
C++ : 模板初阶
2026-11-01 17:05:48
来源:互联网转载
标题:C++ : 模板初阶
@水墨不写bug
正文开始:
C语言的问题 :
写不完的swap函数
在学习C语言时,我们有一个经常使用的函数swap函数,它可以将两个对象的值交换。
我们通常这样实现它:
void swap(int t1,int t2){int tem = t1;t1 = t2;t2 = tem;} 这是很简单的函数。如果我们想交换其他类型的对象,就需要用到函数重载:
void swap(int t1,int t2){int tem = t1;t1 = t2;t2 = tem;}void swap(float t1, float t2){ float tem = t1;t1 = t2;t2 = tem;}void swap(double t1, double t2){ double tem = t1;t1 = t2;t2 = tem;}void swap(char t1, char t2){ char tem = t1;t1 = t2;t2 = tem;}void swap(long t1, long t2){ long tem = t1;t1 = t2;t2 = tem;}//... 但是,内置类型的指针理论上可以达到n级指针,n可以趋于无限大;除此之外,还有自定义类型。这样一来,你就会发现,类型是无法枚举的!一个swap函数需要实现一种类型的交换,那么swap函数是写不完的!
人工解决重复写同一个逻辑,仅仅是类型不同的代码是很低效的!为了解决这个问题,C++引入模板的概念:
顾名思义,模板就是模板,作用就是印出不同的东西,这个东西就是swap函数!
(一)模板简介
模板是C++相对于C的一个新的语法,他需要用到关键字template(模板),如果我们用模板来实现swap函数,就可这样写:
template void swap(T& t1, T& t2){T tem = t1;t1 = t2;t2 = tem;} template + 模板主体 就是模板的基本形式。
要成功的调用模板函数,也需要特定的条件:
template void swap(T& t1, T& t2){T tem = t1;t1 = t2;t2 = tem;}/* void swap(int t1,int t2){int tem = t1;t1 = t2;t2 = tem;} void swap(float t1, float t2){ float tem = t1;t1 = t2;t2 = tem;} void swap(double t1, double t2){ double tem = t1;t1 = t2;t2 = tem;} void swap(char t1, char t2){ char tem = t1;t1 = t2;t2 = tem;} void swap(long t1, long t2){ long tem = t1;t1 = t2;t2 = tem;}*/int main(){int a = 1, b = 5;::swap(a, b);cout
上一篇:怎么开启商户账号服务器?