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类
为什么可以作为引用返回啊 展开
#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类
为什么可以作为引用返回啊 展开
3个回答
展开全部
既然name是string的对象,那么把name作为string&返回就是给name起了个别名,把函数student::Name() const的返回值赋给了“谁”,谁就是name的别名了……引用与其他变量有些不同,可以把变量值直接赋给与该变量类型相同的引用,也可以反过来赋值。所以一个函数要返回某个变量的引用,那就既可以返回这个变量,也可以返回这个变量的引用。你这里就是前一途中情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
name是一个string类型的对象,而函数返回的是string类型的引用,也就是name本身,是string类型那个的,当然是可以的
再举个简单的例子吧
void fun(string& str);
string str;
fun(str); // 这样是可以的,意思是将str本身传递进函数里面,引用并不是类型,而是说明是该对象的本身
再举个简单的例子吧
void fun(string& str);
string str;
fun(str); // 这样是可以的,意思是将str本身传递进函数里面,引用并不是类型,而是说明是该对象的本身
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
name并不是一个string类,而是string类的一个对象,你要搞清楚什么是类,什么是对象。const string & student::Name() const中的符号&就表示是按引用返回的。貌似你还不清楚什么是引用,建议先搞清楚概念。
更多追问追答
追问
我的意思是说 既然返回的是一个引用 但是name本身不是 引用类型的啊
就算name是引用 那么这个引用又是哪个变量的“别名”呢
追答
你说的没错,name本身不是引用,因为引用不是一种类型!他是变量的一个别名。你的程序中函数头部分申明返回一个引用,但是到底返回的是哪个变量或者对象的引用就要看函数体中return 后面跟的那个变量。你那里是return name, 那么你的该函数就是返回对象name的一个别名,而name本身不是引用。函数返回一个别名,并不是要求return 后面跟着一个别名!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询