实践如下:

#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. centos 7 私有云盘 OwnCloud 安装搭建脚本

    #!/bin/bash #Build LAMP Server Conf mysql_secure_installation service mariadb restart systemctl enab ...

  2. 升级python导致yum报错的解决方法

    把python从2.7升级到3.6后 , 使用yum报错 File ‘’/usr/bin/yum'', line 30 except KeyboardInterrupt, e: ^ 故障原因:yum采 ...

  3. VMware:未能将管道连接到虚拟机, 所有的管道范例都在使用中

    问题描述:虚拟机下的Ubuntu系统长时间死机无法正常关机,用Windows任务管理器关闭VMware也关不掉,没办法,只能直接关电脑了...重新打开电脑,启动VMware,发现提示客户机已经处于打开 ...

  4. redis弱密码漏洞利用

    背景: redis无认证,或者弱密码,可以成功连接到redis服务器 反弹shell拿到的权限取决于redis的启动账号 操作: 1. Centos7安装redis客户端 #yum install r ...

  5. CSS中cursor属性

    光标类型   CSS十字准心 cursor: crosshair;手 cursor: pointer;cursor: hand;写两个是为了照顾IE5,它只认hand.等待/沙漏 cursor: wa ...

  6. 清北学堂dp图论营游记day4

    依然zhx讲. 讲了概率与期望: 期望:事件结果的平均大小.记作E(x). E(x)=每种结果的大小与其概率的乘积的和. 例如,记掷一枚骰子的点数为x E(x)=1*(1/6)+2*(1/6)+3*( ...

  7. 〇一——body内标签之交互输入标签一

    今天来搞一下body内的input标签 在一般的网页中,我们经常会遇到一些交互界面,比如注册.登录.评论等环境.在这些交互界面里最常使用的就是input标签. 一.input标签基本使用 input标 ...

  8. 新建swap分区

    1.在一块新盘上创建一个主分区,大小为1G大小. 2.将该硬盘数据变更为82(swap),并进行保存 3.查看是否已经将新建分区更改成了swap分区 4.将/dev/sdb2的标签设置为swap-sd ...

  9. Mongodb数据模型

    描述表关系的方式: 方式一:嵌入式 > db.person.find({name:'zjf'}).pretty() { "_id" : ObjectId("592f ...

  10. noi.ac NA536 【打地鼠】

    又一道可写的小清新思维题 其实想到倒着做了,然而还是因为T1害人不浅(我太菜了),所以并没有写 考虑两个局面不同,显然至少打了一次地鼠,基于操作的颜色覆盖性质,我们可以考虑把操作倒着做,对于一个X点, ...