【发布时间】:2020-04-09 11:26:24
【问题描述】:
我有以下代码:
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std ;
class abc{
public :
string name;
abc & change_name(string s);
};
abc & abc::change_name(string s) {
this->name = s;
return *this;
};
int main(){
abc obj1 ;
abc temp ;
temp = obj1.change_name("abhi");
cout<<"Name is : "<<obj1.name<<endl; \\Prints - Name is : abhi
cout<<"Name is : "<<temp.name<<endl; \\Prints -Name is : abhi
\\cout<<"Name is "<<temp->name<<endl; \\\\Error : base operand of '->' has non-pointer type 'abc'.
return 0;
}
abc 类的成员函数change_name(string s) 返回一个abc 类型的指针。在 main 里面,我有一个abc 类型的temp 对象,它不是一个指针。我的问题是语句temp = obj1.change_name("abhi") 是如何工作的,当change_name(string s) 的返回类型是一个指针但temp是不是指针本身?
【问题讨论】:
-
abc::change_name()返回一个引用,而不是一个指针。 -
已更正。谢谢。
标签: c++ class pointers reference