实践如下:

#include <iostream>
#include <typeinfo> using namespace std; class Bean{
private:
int a;
public:
Bean(){
this->a = ;
}
Bean(int a){
this->a = a;
}
~Bean(){}
int getA(){
return a;
}
// 重载==操作符
bool operator==(Bean to){
cout<<"Bean重载操作符==进行比较"<<endl;
return this->a == to.a;
}
bool operator>(Bean to){
cout<<"Bean重载操作符>进行比较"<<endl;
return this->a > to.a;
}
friend ostream & operator<<(ostream &out, Bean obj){
cout<<"bean a值:"<< obj.a<<endl;
return out;
}
}; // 模板方法实践
template<class Type>
Type maxV(Type a, Type b){
//cout<<" typeid(a).name(): "<< typeid(a).name()<<endl;
return a > b ? a : b;
}
// 重载方法
int maxV(int a, int b){
cout<<" 重载函数"<<endl;
return a > b ? a : b;
} template<class K, class V>
class MyMap{
private:
K keys[];
V values[];
int count = ;
public:
void put(K key, V value){
keys[count] = key;
values[count] = value;
count++;
}
V get(K key){
// if(key == NULL){
// cout << "入参key为空,返回NULL" << endl;
// return (V)NULL;
// }
for(int i = ; i< count; i++){
if(keys[i] == key){
cout << "命中下标:" << i << endl;
return values[i];
}
}
cout << "找不到key,返回NULL" << endl;
return (V)NULL;
}
}; int main() { cout << "模板函数1 实践:" << endl; cout<<"maxV(11,220): "<<maxV(,)<<endl;
cout<<"maxV(11.1f,220.1f): "<<maxV(11.1f,220.1f)<<endl;
cout<<"max(11.1L,220.1L): "<<maxV(.1L,.1L)<<endl;
cout<<"max('a','c'): "<<maxV('a','c')<<endl<<endl; MyMap<int,double> map;
map.put(, );
map.put(, );
map.put(, );
map.put(, );
cout<<"map.get(1): "<<map.get()<<endl;
cout<<"map.get(44): "<<map.get()<<endl;
cout<<"map.get(55): "<<map.get()<<endl;
cout<<"map.get(1): "<<map.get((int)NULL)<<endl; MyMap<Bean,int> beanMap;
beanMap.put(Bean(), );
beanMap.put(Bean(), );
beanMap.put(Bean(), );
cout<<"beanMap.get(Bean(1)): "<<beanMap.get(Bean())<<endl; cout<<"maxV(Bean(1),Bean(11)): "<<maxV(Bean(),Bean())<<endl<<endl; cout << "\n模板函数 end." << endl; return ;
}

输出结果:

C++模板函数实践1的更多相关文章

  1. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)

    1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status ...

  2. 模板函数(template function)出现编译链接错误(link error)之解析

    总的结论:    将template function 或者 template class的完整定义直接放在.h文件中,然后加到要使用这些template function的.cpp文件中. 1. 现 ...

  3. c++模板函数实例化的偏序机制

    一:废话 今天在stackoverflow上看到一个关于c++模板specialization的问题: http://stackoverflow.com/questions/18283851/temp ...

  4. C++ 模板函数与模板类

    一.模板函数 函数模板提供了一类函数的抽象,即代表了一类函数.当函数模板被实例化后,它会生成具体的模板函数.例如下面便是一个函数模板:

  5. ytu 1061: 从三个数中找出最大的数(水题,模板函数练习 + 宏定义练习)

    1061: 从三个数中找出最大的数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 124[Submit][Status][We ...

  6. 为什么模板函数的声明和实现都放在.h文件中

    当你不使用这个模板函数或模板类,编译器并不实例化它,当你使用时,编译器需要实例化它,因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义.所以都放在 ...

  7. [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断

    参考:http://blog.csdn.net/beyondhaven/article/details/4204345 参考:http://blog.csdn.net/joeblackzqq/arti ...

  8. C++:函数模板与模板函数

    6.1 模板的概念 C++允许用同一个函数定义函数,这些函数的参数个数和参数类型不同.例如求最大值的max函数, int max(int x,int y) {       return (x>y ...

  9. C++普通函数与模板函数以及特化函数重载的优先级问题

    在面对C++模板的时候,需要十分注意,因为模板的复杂性有很多情况,所以最好学习模板的方法我个人认为就是用到就去学,用不到就尽量别去看各种奇门怪技,因为你就算看了,好不容易搞懂模板的实现内部了,包括元编 ...

随机推荐

  1. PPT中准确插入公式

    Mathtype直接输入到PPT中的公式,漂移且太小.一般的文本公式不美观. 将Mathtype的公式作为文本形式出现,既解决了漂移和大小的问题,也兼顾的美观. 具体操作如下: 1 打开Mathtyp ...

  2. java多线程ExecutorService

    1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...

  3. php连接阿里云mysql

    1.开启Mysql远程访问端口 现在服务器控制台,安全组那边开启3306端口 2.修改Mysql配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-a ...

  4. Linux——Session复制中的失败的可能原因之一

    组播地址问题 route add -net 224.0.0.0 netmask 240.0.0.0 dev eno16777728(自己的网卡名)

  5. 可靠的TCP连接为何是三次握手和四次挥手

    首先,咱们先来熟悉下经典的tcp/ip模型. tcp/ip 模型为了方便使用,将osi七层模型划分成了四层,分别为网络接口层,网络层,传输层,应用层. 他们作用分别为: 1)网络接口层:主要作用是将i ...

  6. linux pip使用国内源

    最近在Linux里面使用pip安装应用的速度十分的慢,于是便上网找了一些国内的源. 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:https:// ...

  7. 有趣的动画swf 小鼠吃豆子

    今天发现一个有趣的动画swf,小鼠吃豆子,呵呵 <object width="240" height="206" data="http://cd ...

  8. 打包压缩命令tar,zip,split

    1. tar tar的意思是Together ARchive(打包归档).我们可以用来打包,也可以用来解压包,而且还支持打包后用各种格式压缩(gz.bz2.xz等). 单个参数意义:f: 归档file ...

  9. nginx第三天

    nginx架构分析 nginx模块化 nginx基于模块设计,每个模块是一个功能实现,分布式开发,团队协作 核心模块,标准http模块,可选http模块,邮件模块,第三方模块 编译后的源码目录  ob ...

  10. h5css3_01

    一.什么是 HTML5 HTML5 的概念与定义 定义:HTML5 定义了 HTML 标准的最新版本,是对 HTML 的第五次重大修改,号称下一代的 HTML 两个概念: 是一个新版本的 HTML 语 ...