函数模板特化 遇到 函数重载
来源:互联网 发布:百度人工智能智库 编辑:程序博客网 时间:2024/05/20 00:13
#include"stdafx.h"#include<iostream>#include<ostream>#include<istream>template <class T>class Foo{public:static long count(){return ctr;}private:static long ctr;};template<class T>long Foo<T>::ctr = 11;template<class T>int compare(const T& ls,const T& rs){std::cout<<ls;if (ls<rs)return -1;if (rs<ls)return 1;return 0;}template<>int compare<const char*>(const char* const &ls,const char* const &rs){std::cout<<"out";if (*ls<*rs)return -1;if (*rs<*ls)return 1;return 0;}(1)
对于函数模板compare传入两个字符指针时,比较的是两个指针在内存中的地址大小,所以我们需要对该函数模板进行特化。
不过在特化之前考虑添加一个重载函数(不知道这里用重载是否合适)
int compare(const char*ls,const char*rs);
此时 int y = compare("a","b")调用的是int compare(const char*ls,const char*rs);(求高人解答,为何调用是遢而不是实例化的函数模板)
然而 y = compare(aaa,b)调用的是实例化的函数模板;
(2)
但是如果我们用compare函数的特化
template<>int compare<const char*>(const char* const &ls,const char* const &rs){std::cout<<"out";if (*ls<*rs)return -1;if (*rs<*ls)return 1;return 0;}用如下测试代码
char *aaa = "a";char *b = "b";int y = compare(aaa,b);std::cout<<y<<'\n';y = compare("a","b");std::cout<<y<<'\n';结果是
a1
a1
将指针aaa和b所指向的值互换,
char *aaa = "b";char *b = "a";int y = compare(aaa,b);std::cout<<y<<'\n';y = compare("a","b");std::cout<<y<<'\n';结果为
b-1
a1
说明compare(aaa,b)执行了
std::cout<<rs代码段,
用的是实例化的函数模板,但却是用指针的值进行比较。(不懂此过程的调用方法)
(3)
在字符指针上加上 const
constchar *aaa = "b";constchar *b = "a";int y = compare(aaa,b);std::cout<<y<<'\n';y = compare("a","b");std::cout<<y<<'\n';结果为
out1
a1
此时compare(aaa,b)调用的是特化的compare模板
- 函数模板特化 遇到 函数重载
- 模板函数 重载/特化
- 模板函数的全特化与重载
- 从零开始学C++之模板(一):函数模板、函数模板特化、重载函数模板、非模板函数重载
- 从零开始学C++之模板(一):函数模板、函数模板特化、重载函数模板、非模板函数重载
- 模板函数特化
- 函数模板的特化
- 模板函数的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板特化问题-compare函数特化
- C++ 模板全特化中的函数特化
- 函数模板全特化与偏特化
- C++ 模板全特化中的函数特化
- 模板完全特化,函数重载的重载,类模板的继承
- 类模板的特化和函数模板的重载与类模板的继承
- android发送json并解析返回json
- c# winform清空ie缓存的几种方法
- 美运营商拟采用不限时长通话
- qianm
- 3句话搞定Oracle锁表问题
- 函数模板特化 遇到 函数重载
- asp.net CKEditor 在指定位置插入字符串
- SVN常用命令
- Debian 6为cairo打LCD 补丁
- ios下自定义字体
- 使用命令行 Subversion 访问项目源文件
- HDU 1254 推箱子(搜索)
- Android标题栏各种设置
- android中json转换成List<Map>