下面程序getname()为什么不能重新赋值 请大神指点

#include<iostream>
#include<string>
using namespace std;
class Dolphin
{string name;
int age;
public:
Dolphin(string s="Unknown",int n=0):name(s),age(n)
{cout<<"Dolphin is created"<<endl;}
Dolphin(const Dolphin &m)
{this->name=m.name;
this->age=m.age;
cout<<"Dolphin is cloned"<<endl;}

void setname(string na){name=na;}
 string getname(){return name;}
void print()
{cout<<"Name:"<<name<<"Age:"<<age<<endl;}
~Dolphin()
{cout<<"Poor Dolphin is dead"<<endl;}
};
int main()
{Dolphin a("lele",5);
Dolphin b(a);
b.getname()="lipi";
a.print();
b.print();
return 0;}
 

  • b.getname 是个函数
  • b.getname() 是调用这个函数
  • 调用函数后返回了这函数的返回值。
  • 函数的返回值是个b的成员变量name的拷贝,对拷贝赋值不会改变b原来的成员变量name的值。
  • 因此b.print()打印的还是b.name原来的值。
  • 最后粘贴代码最好要排版下,问题里的代码最好用插入代码的方式排版好,别人才能方便看你的代码并给予帮助。