我無法理解爲什麼當我的方法返回一個對象時,對象將被銷燬。對象在返回之前被銷燬
發佈這裏的類結構和方法。
class Var
{
public:
Var operator += (const Var& var);
private:
Var _operation(Var* var, VAR_OPERATOR op);
}
方法:
Var Var::operator += (const Var& var)
{
Var tmp = this->_operation((Var *)&var,VAR_ADD);
return tmp; // here the tmp variable is void
}
Var Var::_operation(Var* var, VAR_OPERATOR op)
{
Var tmp;
// operations
// here the tmp variable has value
return tmp;
}
任何人都知道爲什麼嗎?
你沒有正確實現你的拷貝構造函數嗎?順便說一句,爲什麼演員?爲什麼_operation參數不是一個const指針?如果你有一個很好的理由,至少請使用const_cast來拋出const而不是C樣式。 –
@SebastianRedl是thx,我忘了複製構造函數:S – pava91
它應該是const。運算符超載已經成爲慣例,這來自對數學運算符的直觀理解。如果你做a = a + 5,你不會指望5改變,你會嗎?所以,如果它改變了右手邊的參數,給它一個正確的功能,並且不要使用操作符... –