C++学习笔记第十篇

91.C++中泛型编程的函数模板:

(1)提供一种特殊的函数,可用不同类型进行调用。

(2)看起来和普通函数很相似,区别是类型可被参数化。

template <typename  T>

void Swap (T&a , T&b)

{

    T  t = a;

    a = b;

    b = t;

}

92.函数模板的语法规则;

(1)template关键字用于声明开始进行泛型编程。

(2)typename关键字用于声明泛指类型。

93.函数模板的深入理解:

(1)编译器并不是把函数模板处理成能够处理任意类型的函数。

(2)编译器从函数模板通过具体类型产生不同的函数。

(3)编译器会对函数模板进行两次编译。

(4)在声明的地方对模板代码本身进行编译。

(5)在调用的地方对参数替换后的代码进行编译。

94.函数模板可以像普通函数一样被重载:

(1)C++编译器优先考虑普通函数。

(2)如果函数模板可以产生一个更好的匹配,那么选择模板。

(3)可以通过空模板实参列表的语法限定编译器只通过模板匹配。

95.C++中的类模板:

(1)提供一种特殊的类以相同的行为处理不同的类型。

(2)在类声明前使用template进行标识。

(3)<typename T>用于说明类中使用的泛指类型T。

96.声明的泛指类型T可用于声明成员变量和成员函数。

97.编译器对类模板的处理方式和函数模板相同:

(1)编译器从类模板通过具体类型产生不同的类。

(2)编译器在声明的地方对类模板代码本身进行编译。

(3)编译器在使用的地方对参数替换后的代码进行编译。

98.类模板的工程应用:

(1)由于类模板的编译机制不同所以不能像普通类一样分开实现后,在使用时只包含头文件。

(2)在工程实践上,一般会把类模板的定义直接放到头文件中,只有被调用的类模板成员函数才会被编译器生成可执行代码。

99.类模板可以被特化,用template<>声明一个类时,表示这是一个特化类。

100.特化类模板的意义:当类模板在处理某种特定类型有缺陷时,可以通过类模板的特化来克服处理这种特定类型带来的不足。

注意:编译器优先选择特化类生成对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值