C++每日学习笔记DAY8

1.函数模板
    1.1 template<typename T> 该语句告诉编译器 T 是万能数据类型,下面紧跟着的函数或者类中出现T类型,不需要报错
    1.2 可以用此来实现交换数据功能的函数
    1.3 调用模板函数
        1.3.1 自动类型推导 ---必须让编译器推导出一致 T 类型才能使用模板
        1.3.2  显示指定类型 ---显示告诉编译器 T 的类型如:swap<int>(a,b)
    1.4 模板的使用必须要告诉编译器 T 是什么类型的,否则无法正常使用
2.普通函数和模板函数的区别与调用规则
    2.1 区别    
        2.1.1 普通函数可以隐式类型转换
        2.1.2 函数模板如果是自动类型推导的使用是不可以发生隐式类型转换的
    2.2 调用规则
        2.2.1 如果模板函数和普通函数都可以实现调用时,优先调用的是普通函数
        2.2.2 函数模板同样可以发生函数重载
        2.2.3 可以通过空参数列表语法来强制调用函数模板
        2.2.4 如果函数模板可以产生更好的匹配,优先调用的是函数模板
3.模板机制
    3.1 编译器并不是把函数模板处理成能够处理任何类型的函数,意思它不是万能的
    3.2 函数模板通过具体类型产生不同的函数
    3.3 编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译
4.模板的局限性以及利用具体化技术解决
    4.1 模板并不是真正通用的代码,对于一些自定义数据类型,模板有时候不能实现想要的效果
    4.2 可以通过具体化实现对自定义数据类型的操作
    4.3 具体化的原型:template<> void Swap<A>(A &a,A &b)
5.类模板    
    5.1 语法:template<class Type> 关键字template告诉编译器将要定义一个模板。
    5.2 类模板和函数模板的区别
        5.2.1 类模板使用的时候不可以用自动类型推导,必须显示制定类型
        5.2.2 类模板中的类型可以有默认参数
    5.3 泛型编程---体现在模板技术--特点:将类型参数化 
6.类模板中成员函数创建时机
    6.1 类模板中的成员函数,它并不是一开始就创建出来的而是在运行阶段才被创建出来的
7.类模板作为函数参数
    7.1 指定传入类型
    7.2 参数模板化
    7.3 整个类模板化
    7.4 查看T类型名称
        7.4.1 调用方式:typeid(T).name()

8.类模板遇到继承问题以及解决
    8.1 如果父类A是一个类模板,子类B在继承父类A时,必须指定父类中T的类型,否则无法给父类A中的T分配内存、
    8.2 格式如下:class B:public A<T>(T必须指定是int或者其他)
9.类模板类外实现成员函数
    9.1 先写template<class T1,class T2>
    9.2 调用成员函数格式应为:void B<T1,T2>::showB()
10.类模板的分文件编写问题以及解决
    10.1 类模板不建议做分文件编写,因为成员函数创建时机在运行阶段,使用时候必须包含.cpp才可以
    10.2 解决方案:将类成员函数的声明和实现全都写到一个文件中,并且将文件的后缀名改为.hpp即可
11.类模板遇见友元函数
    11.1 全局函数做友元函数的类内实现
    11.2 全局函数做友元函数的类外实现
        11.2.1 需要告诉编译器模板函数的声明和其实现
12.类模板案例--数组类封装
    12.1 设置属性
        12.1.1 设置 T *pAddress
        12.1.2 设置 int m_Capacity        
        12.1.3 设置 int m_Size
    12.2 设置行为
        12.2.1 添加一个有参构造函数
        12.2.2 添加一个拷贝构造函数
        12.2.3 添加一个析构函数
        12.2.4 重载=运算符:operator=
        12.2.5 重载[]运算符
        12.2.6 添加一个getSize成员函数
        12.2.7 添加一个尾插成员函数    
        12.2.8 添加一个尾删成员函数
        12.2.8 添加一个获取数组大小成员函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值