[C++再学习系列] 模板函数的自定义点
来源:互联网 发布:易语言mysql多线程 编辑:程序博客网 时间:2024/06/07 10:11
模板函数:
在编写模板时,可以通过一些显示的自定义,对模板参数类型做一些必要的限制:
选择1: 模板直接依赖于类型具有给定名字的合适的成员函数, 则显式要求参数T提供该成员函数.
选择2: 模板依赖于”类型具有给定名字的合适的非成员函数”, 则显式的要求T具有给定名字/签名和语义的非成员函数.
选择3: 模板依赖于”类型已经特化(如果必要)另一个模板”, 则需要被特化的模板提供一个(通常是静态类成员)具有给定名字/签名和语义的函数.
Template<typename T>
Void Sample1(T t){
t.foo(); //选择1, foo()是T的成员函数.
foo(t); //选择2, foo()是和类型T一起提供的非成员函数(属于同一个名字空间)
S3Traits<T>::foo(t); //选择3, foo()是静态类成员
}
避免无意的自定义点:
选择1 将模板中的任何辅助函数都放在其自己内嵌的名字空间中(名字空间包括名字空间+类名(静态函数))
选择2 在引用基类的任何成员函数时,显式的使用基类名或者this->进行限定.
Template<typename T>
class X<T>{
public:
void f()
{
X<T>::baz(); //通过类名进行限定
T::baz(); //通过类名进行限定
This->baz(); //this指针
Hepler::baz(); //这里hepler可以是名字空间,也可以是类名
}
}
为模板函数提供显式的自定义点,或避免无意的自定义点,其本质都是C++名字查找规则,就是利用C++的名字查找规则促进有意的名字查找,并避免无意的名字查找。
- [C++再学习系列] 模板函数的自定义点
- [C++再学习系列] 函数模板和类模板
- 学习C++模板---模板函数
- PHP模板学习--Smarty 自定义函数
- (C/C++学习笔记)函数模板的深入理解
- 小白教你学习C++(5)函数模板的使用
- 我的小小学习笔记(7)之C++------模板之模板函数
- 32、不一样的C++系列--函数模板
- C++Template学习笔记之函数模板
- (C/C++学习笔记)函数模板加强
- 系列三 简单的模板类/模板函数
- 【c++系列】函数模板
- Mql4 自定义函数模板
- thinkphp自定义模板函数
- 新手自定义函数模板
- C语言学习-调用自定义函数
- 【Discuz 学习日记】 使用基于默认模板的自定义模板
- (C/C++学习笔记)函数模板遇上函数重载
- MOSS 高级搜索设置,如何过滤moss自带的功能页面
- 编写HTML的一些小技巧(针对IE)
- JavaScript入门学习书籍的阶段选择
- Daily Toeic Sentence
- 修复另存为时无法显示文件夹快捷方式的问题
- [C++再学习系列] 模板函数的自定义点
- JAVA 程序在内存上的分布
- 实现和IE浏览器交互的几种方法的介绍
- jQuery对象与DOM对象之间的转换
- Sql交叉表简单实现
- vsftpd配置详解
- 联想 sl 400 无线网卡驱动
- 使用LESS或Sass重构CSS代码
- Teradata 中表的分类及其各类型表应该注意的问题总结