问题及代码:

/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名:project.cpp
*作 者:陈文青
*完毕日期:2015年6月28日
*版 本 号:v1.0
*
*问题描写叙述:分析以下程序出现的编译错误,给出解决的方案。
*程序输入:
*程序输出:
*/
#include<iostream>
using namespace std;
//定义函数模板
template<class T>
T max(T a, T b)
{
return (a>b)?a:b;
} int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<<max(x,y)<<endl;
cout<<"把T实例化为double:"<<max(x1,y1)<<endl;
return 0;
}

改法1:改变函数名字。使之不与std空间内函数重名

#include<iostream>
using namespace std;
//定义函数模板
template<class T>
T max1(T a, T b)//将函数改为max1
{
return (a>b)?a:b;
} int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<<max1(x,y)<<endl;
cout<<"把T实例化为double:"<<max1(x1,y1)<<endl;
return 0;
}

改法2:加上全局限定符,使用的是本地定义的函数

/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名:project.cpp
*作 者:陈文青
*完毕日期:2015年6月28日
*版 本 号:v1.0
*
*问题描写叙述:分析以下程序出现的编译错误。给出解决的方案。
*程序输入:
*程序输出:
*/
#include<iostream>
using namespace std;
//定义函数模板
template<class T>
T max(T a, T b)
{
return (a>b)?a:b;
} int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<<::max(x,y)<<endl;//加上全局限定符
cout<<"把T实例化为double:"<<::max(x1,y1)<<endl;
return 0;
}

改法3:强调max函数的命名空间

#include<iostream>
using namespace std;
//定义函数模板
template<class T>
T max(T a, T b)
{
return (a>b)?a:b;
} int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<<std::max(x,y)<<endl; //强调是std空间内的函数
cout<<"把T实例化为double:"<<std::max(x1,y1)<<endl;
return 0;
}

改法4:去掉using namespace std;。在main中cout等std中的名称前加std::

#include<iostream>
//不使用std空间
//using namespace std;
//定义函数模板
template<class T>
T max(T a, T b)
{
return (a>b)?a:b;
} int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
std::cout<<"把T实例化为int:"<<max(x,y)<<std::endl; //声明endl和cout的空间
std::cout<<"把T实例化为double:"<<max(x1,y1)<<std::endl;
return 0;
}

改法5:仅仅使用std空间里的cout和endl

#include<iostream>
using std::cout;//仅仅使用std空间里的cout和endl
using std::endl;
//定义函数模板
template<class T>
T max(T a, T b)
{
return (a>b)? a:b;
} int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<<max(x,y)<<endl;
cout<<"把T实例化为double:"<<max(x1,y1)<<endl;
return 0;
}

改法6:将max定义在自己的空间内

#include<iostream>
using namespace std;
namespace m //将max定义在m空间里
{
//定义函数模板
template<class T>
T max(T a, T b)
{
return (a>b)? a:b;
}
}
int main()
{
int x=2,y=6;
double x1=9.123,y1=12.6543;
cout<<"把T实例化为int:"<<m::max(x,y)<<endl; //使用自己m空间内的max函数
cout<<"把T实例化为double:"<<m::max(x1,y1)<<endl;
return 0;
}

第十六周项目3:max带来的冲突的更多相关文章

  1. 第十六周 项目三-max带来的冲突

    分析以下程序出现的编译错误,给出解决的方案. #include<iostream> using namespace std; //定义函数模板 template<class T> ...

  2. 201871010123-吴丽丽 《面向对象程序设计(Java)》第十六周学习总结

    201871010123-吴丽丽 <面向对象程序设计(Java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  3. 201271050130-滕江南-《面向对象程序设计(java)》第十六周学习总结

    201271050130-滕江南-<面向对象程序设计(java)>第十六周学习总结 博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.c ...

  4. 第十六周博客作业 <西北师范大学| 周安伟>

    第十六周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10980707 ...

  5. 201871010104-陈园园《面向对象程序设计(java)》第十六周学习总结

    201871010104-陈园园<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  6. 201871010105-曹玉中《面向对象程序设计(java)》第十六周学习总结

    201871010105-曹玉中<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个过程 https://www.cnblogs.com/nwnu-daizh/ ...

  7. 201871010106-丁宣元 《面向对象程序设计(java)》第十六周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十六周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  8. 201871010107-公海瑜《面向对象程序设计(java)》第十六周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第十六周学习总结            项目                            内容   这个作业属于哪 ...

  9. 201871010128-杨丽霞《面向对象程序设计(java)》第十六周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第十六周学习总结(1分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...

随机推荐

  1. document.documentElement与body下clientHeight,scrollHeight等区别

    本次说明仅在chrom环境下,ie等其他浏览器可能不同 1获取显示屏高度(pc和移动端,屏幕分辨率px) window.screen.height => 这个好理解,不多说. 2获取浏览器可视窗 ...

  2. sql server 与 mysql在自定以数据类型的区别

    sql server   中可以使用 create  TYPE postal_code FORM varchar(6) not null; 用于限定邮编的数据位数,他基于varchar数据类型 注意: ...

  3. 洛谷 P1617 爱与愁的一千个伤心的理由

    P1617 爱与愁的一千个伤心的理由 题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) <爱与愁的故事第一弹·heartache>第二章. 经历了心痛后,爱与愁大神不行了. 题目描述 ...

  4. 拷贝构造函数不能传值,只能传引用,而且一般是传const引用

    为什么呢?因为传值函数,需要调用拷贝构造函数,那就层层循环无止境了.

  5. 仿hibernate,spring框架手动写

    近期学习了hibernate底层技术和spring 的底层技术,认为非常不错,所以想分享下,要是说的不够具体.能够去下载资源自己查看下载链接 技术的体现是在实际中的.如今大体介绍一下吧 首先介绍hib ...

  6. mysql的查询练习1

    1.多表查询

  7. 编写shell脚本获取本机的网络地址。&#160; 比方:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是&#160;192.168.100.1/255.255.255.

    ubuntu@ubuntu:~$ vim getlocalip.sh #!/bin/bash #ifconfig | grep inet | awk '$2' | awk -F : '$2' IP=` ...

  8. Android应用内加载pdf的方法?

    [可行] 最直接的方式下载到本地, 然后调用相关应用打开 [可行,有局限] 使用 webview 加载, 需要在 原url 前面加上 http://docs.google.com/gview?url= ...

  9. 19.boost A*算法

    #include <iostream> #include <string> #include <utility> #include <vector> # ...

  10. 微信重排版 URL

    http://qbview.url.cn/getResourceInfo?appid=62&url=https%3A%2F%2Fcodepen.io%2Fbenjamminf%2Ffull%2 ...