这个是头文件中关于struct sale_data的声明
struct sale_data
{
public:
//other constructors
sale_data& operator+ (sale_data&);
private:
std::string bookNo;
unsigned sold=0;
double revenue=0.0;
};
这段是source中关于重载+运算符的定义
sale_data&
sale_data::operator+(sale_data& p)
{
sale_data New;
New.bookNo = bookNo + p.bookNo;
New.revenue = revenue + p.revenue;
New.sold = sold + p.sold;
return New;
}
但是会出现一个warning如下
warning: reference to local variable "New" returned [-Wreturn-local-addr]|
本人知道这是由于本人返回的是一个引用值导致的问题,本人想问一下这样编译后运行的结果会产生什么错误吗
(PS:本人把返回值改成了sale_data后就不会有warning 了)
解决方案
20
返回局部变量的指针或是引用是很危险的举动,因函数返回后,局部变量销毁,指向其的指针或引用就是个定时炸弹