实践如下:

#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. Python内置函数清单

    作者:Vamei 出处:http://www.cnblogs.com/vamei Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些 ...

  2. 多线程学习-- part 1 Thread

    一.Thread的使用 (1)sleep:进程等一会 (2)join:让并发处理变成串行 (3)start:启动线程的唯一方法,start()首先为线程分配必须的系统资源,调度线程运行并执行线程的ru ...

  3. 微信小程序多video播放暂停问题

    <swiper class="swiper" indicator-dots="{{indicatorDots}}" autoplay="{{fl ...

  4. Go语言标准库之fmt.Print

    Go语言fmt.Printf使用指南 本文整理了Go语言的标准输出流(fmt.Printf)在打印到屏幕时的格式化输出操作. 在这里按照占位符将被替换的变量类型划分,更方便查询和记忆. General ...

  5. zabbix 邮件报警事件:Zabbix discoverer processes more than 75% busy

    Problem has been resolved at :: on Problem name: Zabbix discoverer processes more than % busy Host: ...

  6. Maven 技巧知多少

    Maven是一种帮助我们快速构建项目的小工具,它可以解决我们在项目过程中手动导包造成的版本不一致的问题,以及找包困难等问题,同时通过Maven创建的项目都有固定的目录格式,使得约定优于配置,我们通过固 ...

  7. python文件操作-1.将PDF转成Excel

    # https://www.jianshu.com/p/f33233e4c712 import pdfplumber # 为了操作PDF from openpyxl import Workbook w ...

  8. dedecms织梦网站本地迁移到服务器后,后台更新栏目文档提示模板文件不存在,无法解析文档!的解决办法

    解决办法: 1.系统设置-系统基本参数-站点设置-网页主页链接,替换为空 2.系统设置-系统基本参数-核心设置-DedeCMS安装目录,替换为空

  9. JavaScript 的 this 指向问题深度解析

    与我们常见的很多语言不同,JavaScript 函数中的 this 指向并不是在函数定义的时候确定的,而是在调用的时候确定的.换句话说,函数的调用方式决定了 this 指向. JavaScript 中 ...

  10. linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案

    1.使用yum安装mysql后 2.初始密码在/var/log/mysqld.log这个文件里 3.输入命令:grep 'temporary password' /var/log/mysqld.log ...