#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,老师, 这个赋值运算符重载内部创建的是一个栈变量,最后将这个栈变量的引用返回了,但是栈变量会随着函数的结束而销毁,那返回的这个对象引用是不是有问题?这样写是对的吗?
是的,这样你返回了一个临时变量的引用也就是地址值给到外界,这样外部其实还能操控你这个地址,但是地址指向的数据已经被销毁了。一般来说,返回引用或者是常引用通常是返回类的私有成员变量,用于提供外部接口,特别的例如Get函数,const Data& Class::GetData() const { return m_data; };这种情况以常引用的方式返回了一个Data变量,同时函数为常函数。