c++基础-补漏日记7(二级指针,模板,类模板,类模板传参)

目录

1  二级指针

二维数组

 动态开辟

模板

1.普通函数自带隐式转换,如计算时会把字符转成整型

 2.函数模板自动类型推导,不可以发生隐式类型推导。

 3.函数模板显式指定类型,可发生隐式转换

普通函数和函数模板的调用规则

类模板的基本语法

基本语法

模板和参数列表可以有默认参数。

类模板的函数成员并不是一开始就创建的,而是调用时创建的。

类模板对象传参

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。

整个类模板化

 

有点暴力。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值