码迷,mamicode.com
首页 > 其他好文 > 详细

16周【项目3-max带来的冲突】

时间:2015-06-23 21:46:54      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:c++   计算机   阅读   编程   x   

问题描述:

【项目3-max带来的冲突】
分析下面程序出现的编译错误,给出解决的方案。

<code class="hljs cpp has-numbering"><span style="color:#ff6666;"><strong><span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;"><span class="hljs-preprocessor">#include<iostream></span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> <span class="hljs-built_in">std</span>;
<span class="hljs-comment">//定义函数模板</span>
<span class="hljs-keyword">template</span><<span class="hljs-keyword">class</span> T>
T max(T a, T b)
{
    <span class="hljs-keyword">return</span> (a>b)?a:b;
}

<span class="hljs-keyword">int</span> main()
{
    <span class="hljs-keyword">int</span> x=<span class="hljs-number">2</span>,y=<span class="hljs-number">6</span>;
    <span class="hljs-keyword">double</span> x1=<span class="hljs-number">9.123</span>,y1=<span class="hljs-number">12.6543</span>;
    <span class="hljs-built_in">cout</span><<<span class="hljs-string">"把T实例化为int:"</span><<max(x,y)<<endl;
    <span class="hljs-built_in">cout</span><<<span class="hljs-string">"把T实例化为double:"</span><<max(x1,y1)<<endl;
    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</span></span></strong></span></code>
<code class="hljs cpp has-numbering"><strong><span style="font-family:楷体_GB2312;font-size:18px;color:#ff6666;">分析:</span></strong></code>
<code class="hljs cpp has-numbering"><strong><span style="font-family:楷体_GB2312;font-size:18px;color:#ff6666;">因为这里我们自定义的函数名是max是类库里本来就有的所以在调用的时候会冲突。</span></strong></code>
<code class="hljs cpp has-numbering"><strong><span style="font-family:楷体_GB2312;font-size:18px;color:#ff6666;">解决在调用max函数时候前面加::</span></strong></code>
<code class="hljs cpp has-numbering"><strong><span style="font-family:楷体_GB2312;font-size:18px;color:#ff6666;">代码:</span></strong></code>
<code class="hljs cpp has-numbering"></code><pre class="cpp" name="code">#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;
}


<code class="hljs cpp has-numbering"><strong><span style="font-family:楷体_GB2312;font-size:18px;color:#ff6666;">运行结果:</span></strong></code>
<code class="hljs cpp has-numbering"><img src="http://img.blog.csdn.net/20150623182842754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenBfX193YWo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></code>

16周【项目3-max带来的冲突】

标签:c++   计算机   阅读   编程   x   

原文地址:http://blog.csdn.net/zp___waj/article/details/46608769

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!