2024/6/30
模板
概念:
在C++中,模板是一种泛型编程的工具,它允许程序员编写与类型无关的代码。
作用:
通过使用模板,你可以编写一种可以处理多种数据类型的函数或类,而无需为每种数据类型编写单独的实现。
分类:
函数模板和类模板
函数模板
建立一个通用函数,其函数返回值类型和形参类型可以不具体定制,用一个虚拟的类型来代表。
语法:
函数模板的注意事项:
1、自动类型推导,必须推导出一致的数据类型T才可以使用
T只有一个,数据类型有两个,T不会影分身,所有报错。那么,我们是不是可以搞多一个T出来就可以解决呢?是的,没错。
2、模板必须要确定出T的数据类型,才可以使用
使用函数模板的两种方式:
1、隐式推导方式,即不告诉编译器数据类型是什么,让编译器自行推导出来。
2、显示指定类型,主动告诉编译器数据类型是什么。
类模板
语法:
和函数模板的语法相差无几
类模版和函数模板的区别:
1、使用类模板时,必须使用显示指定类型,不能使用隐式类型推导。
2、类模板在模板参数列表中可以有默认参数
类模板对象作为函数参数:
1、指定传入类型
2、参数模板化
3、整个类模板化
类模板与继承的那些事:
当类模板碰到继承时,需要注意以下几点
1、当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型
2、如果不指定,编译器无法给子类分配内存
3、如果想灵活指定出父类中T的类型,子类也需变为模板
类的成员函数类外实现怎么搞:
类模板与友元:
1、全局函数类内实现
2、全局函数类外实现
类模板实战之数组类(类似于vector容器)
需求分析:
1、可以对内置数据类型以及自定义数据类型进行存储
2、将数组中的数据存储到堆区
3、构造函数中可以传入数组的容量
4、提供对应的拷贝构造函数以及operator=防止浅拷贝问题
5、提供尾插法和尾删法对数组中的数据进行增加和删除
6、可以通过下标的方式访问数组中的元素
7、可以获取数组中当前元素个数和数组的容量
8、可以使用cout一次性输出数组中的元素
实现:
测试一:内置数据类型
测试二:自定义数据类型
标签:函数,数据类型,C++,编译器,day10,淬体,数组,类型,模板 From: https://blog.csdn.net/Wumingdegushi/article/details/140081253