这个是头文件中关于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
返回局部变量的指针或是引用是很危险的举动,因函数返回后,局部变量销毁,指向其的指针或引用就是个定时炸弹