问题及代码:

/*
*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. Having用法

    HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似.WHERE 搜索条件在进行分组操作之前应用:而 HAVING 搜索条件在进行分组操作之后应用 ...

  2. 【codeforces 234F】Fence

    [题目链接]:http://codeforces.com/problemset/problem/234/F [题意] 你有n块板要凃油漆; 然后每块板有高度h[i];(宽度都为1) 然后每块板只能凃同 ...

  3. 【codeforces 747E】Comments

    [题目链接]:http://codeforces.com/problemset/problem/747/E [题意] 给你一个类似递归的结构; 让你把每一层的字符串按照层,一层层地输出出来; 并输出层 ...

  4. iOS UI16_数据持久化

    // // Student.h // UI16_数据持久化 // // Created by dllo on 15/8/19. // Copyright (c) 2015年 zhozhicheng. ...

  5. PCA(Principal Components Analysis)主成分分析

    全是图片..新手伤不起.word弄的,结果csdn传不了..以后改. .

  6. I hate it (线段树)

    B - I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  7. java-面向对象(二)

    这几天正在看HeadFirst的时候,突然认为面向对象的几个特点,有点理解模糊不清.所以在这再次回想一下,加深印象. 上篇博客(http://blog.csdn.net/u010539352/arti ...

  8. bzoj4568: [Scoi2016]幸运数字(LCA+线性基)

    4568: [Scoi2016]幸运数字 题目:传送门 题解: 好题!!! 之前就看过,当时说是要用线性基...就没学 填坑填坑: %%%线性基 && 神犇 主要还是对于线性基的运用和 ...

  9. xBIM 基础06 将STEP物理文件转换为XML

    系列目录    [已更新最新开发文章,点击查看详细]  一.STEP标准简介 STEP,它是Standard for the Exchange of Product model data的缩写.产品数 ...

  10. Linux下安装ipython与jupyter

    IPython从Python发展而来,更倾向于科学计算.互联网数据分析更喜欢用. 首先切换root用户: su - root pip3自动安装ipython [root@hear ~]# ipytho ...