c++返回引用

#include<iostream>#include<string>#include<cstring>usingnamespacestd;classstudent{pri... #include <iostream>
#include <string>
#include<cstring>
using namespace std;

class student
{
private : string name ;

public: const string & Name() const;
student();
void show();

};
int main(){
student A;
A.show();
system("pause");
return 0;}

const string & student::Name() const

{
return name;

}

void student::show()
{ cout<<name; };
student::student()
{name="aaa";}
这里面的
const string & student::Name() const
{
return name;
}
返回值是要求是引用 但是 name并不是引用啊 只是一个string类
为什么可以作为引用返回啊
展开
 我来答
White_MouseYBZ
2013-01-03 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6384万
展开全部
既然name是string的对象,那么把name作为string&返回就是给name起了个别名,把函数student::Name() const的返回值赋给了“谁”,谁就是name的别名了……引用与其他变量有些不同,可以把变量值直接赋给与该变量类型相同的引用,也可以反过来赋值。所以一个函数要返回某个变量的引用,那就既可以返回这个变量,也可以返回这个变量的引用。你这里就是前一途中情况。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2013-01-02 · TA获得超过7293个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3952万
展开全部
name是一个string类型的对象,而函数返回的是string类型的引用,也就是name本身,是string类型那个的,当然是可以的

再举个简单的例子吧
void fun(string& str);
string str;
fun(str); // 这样是可以的,意思是将str本身传递进函数里面,引用并不是类型,而是说明是该对象的本身
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
winforever1989
2013-01-02 · TA获得超过337个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:129万
展开全部
name并不是一个string类,而是string类的一个对象,你要搞清楚什么是类,什么是对象。const string & student::Name() const中的符号&就表示是按引用返回的。貌似你还不清楚什么是引用,建议先搞清楚概念。
更多追问追答
追问
我的意思是说  既然返回的是一个引用   但是name本身不是 引用类型的啊
就算name是引用 那么这个引用又是哪个变量的“别名”呢
追答
你说的没错,name本身不是引用,因为引用不是一种类型!他是变量的一个别名。你的程序中函数头部分申明返回一个引用,但是到底返回的是哪个变量或者对象的引用就要看函数体中return 后面跟的那个变量。你那里是return name, 那么你的该函数就是返回对象name的一个别名,而name本身不是引用。函数返回一个别名,并不是要求return 后面跟着一个别名!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式