C++ : 模板初阶

2024-06-04 5786阅读

标题:C++ : 模板初阶

@水墨不写bug


C++ : 模板初阶 第1张


正文开始:

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 

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]