[C] 纯文本查看 复制代码 01-课程回顾.avi
02-函数模板.avi
03-实现对char和int类型的数组排序.avi
04-函数模板和普通函数的区别以及调用规则.avi
05-模板机制和模板局限性.avi
06-类模板基本语法.avi
07-类模板中的成员函数创建时机.avi
08-类模板做函数参数.avi
09-类模板碰到继承的问题以及解决.avi
10-类模板中的成员函数类外实现.avi
11-类模板的分文件编写问题以及解决.avi
12-类模板碰到友元问题以及解决.avi
13-类模板应用-实现通用类型数组案例需求分析.avi
14-类模板应用-实现通用类型数组.avi 1 函数模板 1.1 泛型编程 – 模板技术 特点:类型参数化 1.2 template< typename T > 告诉编译器后面紧跟着的函数或者类中出现T,不要报错,T是一个通用的数据类型 1.3 实现通用两个数进行交换函数 1.4 使用 1.4.1 自动类型推导 必须要推导出一致的T才可以使用 1.4.2 显示指定类型 mySwap<int>(a,b); 2 实现对char和 int类型数组进行排序 2.1 利用模板技术 实现对char和int类型数组通用排序函数 3 函数模板和普通函数的区别以及调用规则 3.1 区别 3.1.1 如果使用自动类型推导,是不可以发生隐式类型转换的 3.1.2 普通函数 可以发生隐式类型转换 3.2 调用规则 3.2.1 如果函数模板和普通函数都可以调用,那么优先调用普通函数 3.2.2 如果想强制调用函数模板,可以使用空模板参数列表 3.2.2.1 myPrint<>(a, b); 3.2.3 函数模板也可以发生函数重载 3.2.4 如果函数模板能产生更好的匹配,那么优先使用函数模板 4 模板的实现机制 4.1 编译器并不是把函数模板处理成能够处理任何类型的函数 4.2 函数模板通过具体类型产生不同的函数 --- 通过函数模板产生的函数 称为模板函数 4.3 编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译。 5 模板局限性 5.1 模板并不是真实的通用,对于自定义数据类型,可以使用具体化技术,实现对自定义数据类型特殊使用 5.2 template<> bool myCompare(Person &a, Person &b) 6 类模板 6.1 //类模板和函数模板区别: 6.2 //1、类模板不可以使用自动类型推导,只能用显示指定类型 6.3 //2、类模板中 可以有默认参数 7 类模板中成员函数创建时机 7.1 类模板中的成员函数 并不是一开始创建的,而是在运行阶段确定出T的数据类型才去创建 8 类模板做函数参数 8.1 1、指定传入类型 8.1.1 void doWork(Person <string, int>&p) 8.2 2、参数模板化 8.2.1 template<class T1, class T2> 8.2.2 void doWork2(Person <T1, T2>&p) 8.3 3、整个类 模板化 8.3.1 template<class T> 8.3.2 void doWork3( T &p) 8.4 查看T数据类型 8.4.1 typeid(T).name() 9 类模板碰到继承的问题以及解决 9.1 必须要指定出父类中的T数据类型,才能给子类分配内存 9.2 template<class T1 ,class T2> 9.3 class Son2 :public Base2<T2> 10 类模板中的成员函数类外实现 10.1 void Person<T1, T2>::showPerson() 11 类模板的分文件编写问题以及解决 11.1 类模板中的成员函数,不会一开始创建,因此导致分文件编写时连接不到函数的实现,出现无法解析的外部命令错误 11.2 解决方式1: 11.2.1 直接包含.cpp文件 (不推荐) 11.3 解决方式2: 11.3.1 将类声明和实现写到同一个文件中,将文件的后缀名改为 .hpp 即可 12 类模板碰到友元的问题以及解决 12.1 友元类内实现 12.1.1 friend void printPerson(Person<T1, T2> &p) 12.2 友元类外实现 12.3 声明: 12.3.1 friend void printPerson2<>(Person<T1, T2> &p); 12.4 实现: 12.4.1 template<class T1,class T2> 12.4.2 void printPerson2(Person<T1, T2> &p){ 。。。} 12.5 template<class T1,class T2> 12.6 class Person; 12.7 12.8 template<class T1,class T2> 12.9 void printPerson2(Person<T1, T2> &p); 13 类模板应用 – 数组类封装 13.1 将类写到 myArray.hpp中 13.2 属性: 13.2.1 T * pAddress; 指向堆区数组指针 13.2.2 int m_Capacity 数组容量 13.2.3 int m_Size ;数组大小 13.3 行为 13.3.1 myArray(int capacity) 13.3.2 myArray(const MyArray & arr) 13.3.3 operator= 13.3.4 operator[] 13.3.5 ~myArray() 13.3.6 getCapacity 13.3.7 getSize 13.3.8 pushback 14
|