(通過指針傳遞)使用堆棧超載,按值傳遞:除了分配超載基於此鏈接增加分配
complx complx::operator+ (const complx& c) const
{
complx result;
result.real = (this->real + c.real);
result.imag = (this->imag + c.imag);
return result;
}
BU我想用這樣的:
complx& complx::operator+ (const complx& c) const
{
complx result = new complx;
result->real = (this->real + c.real);
result->imag = (this->imag + c.imag);
return *result;
}
這是正確的嗎?我應該在哪裏釋放堆?有沒有更好的方法?
爲什麼你想返回一個你剛剛在堆上創建的東西的引用?第一個簽名怎麼樣擔心你? – Pradhan
第一個例子*是「更好的方式」。你能用第一種方式解釋你有什麼問題嗎? –
我是我錯了,但我總是嘗試避免按值傳遞(不必要地複製值並且堆棧的大小有限)。 – user1436187