c++ 泛型编程之类模板

编程知识 行业动态 更新时间:2024-06-13 00:22:29

c++ 泛型编程之类模板

1.定义:是对一批仅成员数据类型(成员函数和程序数据)不同的类的抽象。程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类。

2.语法

//类模板定义格式
template <<模板参数表>>//模板参数表里面是要用几个抽象参数
class <类模板名>
{
	<成员函数与成员变量>
};

//成员函数在类外定义格式
template <<模板参数表>>
<返回值类型><类模板名><<模板参数名列表>>::<成员函数名>(<参数表>)
{
	<函数体>
}

//类模板定义对象
类模板名<真实类型参数表>对象名(构造函数实际参数表)

3.原理

(1)编译器由类模板生成类的过程叫做类模板的实例化;

(2)编译器自动用具体的数据类型替换类模板中的类型参数,生成模板类的代码;

(3)由类模板实例化得到的类叫做模板类;

4.示例



5.二次编译机制

(1)在编译器进行编译的时候,编译器会产生类的模板函数的声明,当时实际确认类型后调用的时候,会根据调用的类型进行再次帮我们生成对应类型的函数声明和定义。

(2)在编译器进行编译的时候,编译器会产生类的模板函数的声明,当时实际确认类型后调用的时候,会根据调用的类型进行再次帮我们生成对应类型的函数声明和定义。解决方案:类的前置声明;友元模板函数的前置声明;友元模板函数声明需要增加泛型支持。

6.类模板与非类型参数

(1)语法

template <class T,int elementsNumber>

(2)限制

①整数

②枚举类型

③指针指向的对象不能在指针所定义的文件中定义,必须在别的文件中定义

④不能是浮点类型,不能是类类型!

(3)示例


更多推荐

c++ 泛型编程之类模板

本文发布于:2023-04-02 15:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/84c4fb9fd1e5d9308b20db62350b6e54.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模板

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!