C++数据结构–泛型编程

C++数据结构–泛型编程泛型的定义主要有以下两种 1 在程序编码中一些包含类型参数的类型 也就是说泛型的参数只可以代表类 不能代表个别对象

大家好,欢迎来到IT知识分享网。

1、泛型编程的概念

泛型的定义主要有以下两种:

1.在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)

2.在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。

一些强类型编程语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的编程语言只能达到部分目的。

泛型编程是一种不考虑具体数据类型的编程方式,可以由下面的Swap函数来进行了解

 void Swap(T& a,T& b) { T t=a; a=b; b=t; } 

在这个例子中,Swap泛型的写法中的T不是一个具体的数据类型,而是泛指任意的数据类型

2、C++中的函数模板

一种特殊的函数可用不同的类型进行调用,看起来和普通的函数很相似,区别是类型可被参数化

 template<typename T> void Swap(T& a,T& b) { T t=a; a=b; b=t; }

函数模板的语法规则:

template关键字用于声明开始进行泛型编程

typename关键字用于声明泛指类型

函数模板使用有自动类型推导使用和具体类型调用两种

int a=0; int b=1; Swap(a,b);//自动推导 float c=2; float d=3; Swap<float>(c,d);//显示调用

3、C++中的类模板

C++中的类模板以相同的方式处理不同的类型,在类声明前使用template进行标识

<typename T>用于说明类中使用的泛指类型T

template <typename T> class Book { public: T Bo(T a,T b); };

类模板的应用

1.只能显示指定具体类型,无法自动推导

2.使用具体类型<type>定义对象

Book<int>book1; Book<string>book2; Book<char>book3;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/123806.html

(0)
上一篇 2024-11-20 22:45
下一篇 2024-11-21 07:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信