weixin_43991112 2018-12-06 05:14 采纳率: 100%
浏览 688
已采纳

在定义重载赋值运算符时,为什么要用应用做返回值。

class string
{

char *m_str;

public:

string(char *s)

{

m_str=s;

}

string()
{};

String & operator=(const string s) // 这里!!!返回值为啥是引用

{

m_str=s.m_str;

return *this

}// 返回*this不是会调用析构函数的吗!

};

int main()

{

string s1("abc"),s2;

s2=s1;

cout<<s2.m_str;

}

  • 写回答

1条回答 默认 最新

  • _ZGq 2018-12-08 02:49
    关注

    为了防止不必要的值被复制。如果返回值,那么会把值都复制一遍再传到外面;返回引用的话,返回的对象还是与*this同一个地址,值就不会被复制了。

    如果有帮助,希望采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    悬赏问题

    • ¥50 burgers方程求逆
    • ¥15 matlab最小二乘法拟合非线性曲线提问
    • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
    • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
    • ¥30 各位help写一下代码
    • ¥15 在运行SDEdit模型下载不了
    • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
    • ¥15 电脑连上WIFI却用不了
    • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
    • ¥15 hyper-v出现的问题