问题及代码:

/*
*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. 题解 CF1051F 【The Shortest Statement】

    这道题思路比较有意思,第一次做完全没想到点子上... 看到题目第一反应是一道最短路裸题,但是数据范围1e5说明完全不可能. 这个时候可以观察到题目给出了一个很有意思的条件,就是说边最多比点多20. 这 ...

  2. echarts 柱状图和饼状图动态获取后台数据

    运用echarts来实现图表 1.首先下载echarts包  http://echarts.baidu.com/echarts2/doc/example.html,在这里我下载的是 2.将echart ...

  3. HDU 4332 Contest 4

    顶好的一道题.其实,是POJ 2411的升级版.但POJ 2411我用的插头DP来做,一时没想到那道题怎么用状态DP,于是回头看POJ 2411那一道的状态DP,其实也很简单,就是每一行都设一个状态, ...

  4. HDU 4415 Assassin&#39;s Creed(贪心)

    pid=4415">HDU 4415 题意: 壮哉我Assassin! E叔有一柄耐久度为m的袖剑,以及n个目标士兵要去解决. 每解决掉一个士兵,消耗袖剑Ai的耐久度.且获得该士兵的武 ...

  5. 设计网页录入信息与自己定义server数据接收

    需求:设计一个注冊网页用于录入username和登录password.并将数据传入server并显示出来. 1.前言:网页提交的 get 和 post 两种方式. (1)对于get提交方式,以本文中样 ...

  6. USACO runaround

    /* ID:kevin_s1 PROG:runround LANG:C++ */ #include <iostream> #include <cstdio> #include ...

  7. LeetCode OJ 215. Kth Largest Element in an Array 堆排序求解

    题目链接:https://leetcode.com/problems/kth-largest-element-in-an-array/ 215. Kth Largest Element in an A ...

  8. eclipse 设置代码大小和布局里面代码大小

    Eclipse字体大小调整: Window /  Preferences / General / Appearance / ColorsAnd Fonts .在右边的对话框里选择Java – Java ...

  9. centos6.5配置SSH免password登录

    创建新用户:useradd hadoop 设置password:passwd hadoop,输入自己想要的password就可以.之后su hadoop切换用户 改动主机名:vim /etc/sysc ...

  10. POJ 1950暴搜

    思路: 暴力枚举好了..每回判断一下-- 用long long会超时 但是10^20会爆int... 不过仔细想一想 超过10^9的数肯定拼不回0啊-- 猥琐用int AC了 (当然可以打表 ) // ...