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

来源:4-9 强者争霸

永恒丿丶之火

2024-01-18 22:14

#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回答

  • newjeans
    2024-03-12 23:08:26

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

趣味 C++ 进阶

本课程是 C++ 的进阶课程,继续趣味学习之旅,带你探索 C++ 的高级用法。

13927 学习 · 44 问题

查看课程

相似问题