打印

函数引用问题

[复制链接]
929|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-4-24 18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学习函数模版时,有如下代码。
#include <iostream>
#include <string>
using namespace std;
template <class T>
const T& max(const T& x,const T&y)//个人觉得返回的引用没什么作用!!!
{
return x < y ? y : x;
}
void main()
{
int i1 = 3;
int i2 = 7;
cout << "Maxium is: " <<max(i1,i2) << endl;

float f1 = 22.5;
float f2 = 12.3;
cout << "Muxium is: " << max(f1,f2) << endl;

string s1 = "test1";
string s2 = "test2";
cout << "Maxium is: " << max(s1,s2) << endl;
}
我的问题
1)T& max这个函数个人觉得因为参数已经是引用了,所以这个函数用的就是实参,所以再返回一个引用,感觉没什么作用,也就是直接T max(const T& x,const T&y),也可以,不知道对不对?
2)string s1 = "test1";
string s2 = "test2";
这两个参数是如何比较大小的?

相关帖子

沙发
火箭球迷| | 2012-4-24 18:34 | 只看该作者
如果需要用到返回值的时候还是有区别的,从第一个字符开始比较AscII值,如果相等继续下一个,否则不执行下一个字符比较,直接返回

使用特权

评论回复
板凳
yybj| | 2012-4-24 18:41 | 只看该作者
只是为了防止临时变量,如果返回值不是相当底层或者是大的结构体之类的化,除了规范并没有其他用途。如果你不用&引用,其会产生一个临时变量用来存储值,而你用的值就是临时变量的值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝