为了账号安全,请及时绑定邮箱和手机立即绑定

关于赋值运算重载是否正确的问题?

#include "Dollar.h"

Dollar & Dollar::operator + (const Dollar & doll)
{
    Dollar dollarRes;

    int c = doll.cent + cent;
    dollarRes.cent = c % 100;

    int d = doll.dollar + dollar;
    dollarRes.dollar = d + c / 100;

    return dollarRes;
}

@Redknot,老师, 这个赋值运算符重载内部创建的是一个栈变量,最后将这个栈变量的引用返回了,但是栈变量会随着函数的结束而销毁,那返回的这个对象引用是不是有问题?这样写是对的吗?

正在回答

1 回答

是的,这样你返回了一个临时变量的引用也就是地址值给到外界,这样外部其实还能操控你这个地址,但是地址指向的数据已经被销毁了。一般来说,返回引用或者是常引用通常是返回类的私有成员变量,用于提供外部接口,特别的例如Get函数,const Data& Class::GetData() const { return m_data; };这种情况以常引用的方式返回了一个Data变量,同时函数为常函数。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于赋值运算重载是否正确的问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信