您的位置:首页 > 其它

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

2015-06-23 18:21 274 查看
问题描述:

【项目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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: