目录
1 二级指针
二维数组
动态开辟
2 模板
1.普通函数自带隐式转换,如计算时会把字符转成整型
2.函数模板自动类型推导,不可以发生隐式类型推导。
3.函数模板显式指定类型,可发生隐式转换
普通函数和函数模板的调用规则
3 类模板的基本语法
基本语法
模板和参数列表可以有默认参数。
类模板的函数成员并不是一开始就创建的,而是调用时创建的。
4 类模板对象传参
1指定传入类型
2参数模板化
3整个类模板化
二级指针
二维数组
p指向五个区域,每个区域会指向五个区域。
当数组来用就好。
动态开辟
原↓
动态开辟↓
模板
·把返回值类型和形参类型抽象出来。
·类型参数化。
(void也可改成T)
写一次模板,头顶要写一次template。
1.普通函数自带隐式转换,如计算时会把字符转成整型
2.函数模板自动类型推导,不可以发生隐式类型推导。
3.函数模板显式指定类型,可发生隐式转换
普通函数和函数模板的调用规则
1.函数模板和普通函数都存在,优先调用普通函数
2.空模板参数列表,优先调用函数模板。
Add<>(a,b);
3.函数模板可以发生函数重载
4.函数模板如果能更好地匹配,优先调用函数模板。
主函数是char
普通函数int,函数模板T
编译器认为,char转int,不如直接用T方便。
猜测参考:
“template<> + 普通函数重载 = 模板的重载”
类模板的基本语法
基本语法
类的形参类型全部替换。
模板和参数列表可以有默认参数。
类模板的函数成员并不是一开始就创建的,而是调用时创建的。
(1)成功例子
(2)失败例子
1.有两个基本类basic1和basic2、一个进阶类advanced。
2.在advanced里用T定义了个a。
3.advanced类的成员函数调用了basic1和basic2的成员函数,不报错
4.主函数实例化模板是basic1的advanced对象。该对象能调用basic1的成员函数。(图1)
5.主函数实例化模板是basic2的advanced对象。该对象不能调用basic1的成员函数。(图2)因为adv2内存放的是basic2的成员函数,然而创建的对象是basic1的,所以不能。
类模板对象传参
1.指定传入类型
参数模板化
写一个带模板的方法,要写一次template。
整个类模板化
有点暴力。。。



