[問題] 問一個物件相加 operator+ 的問題....
寫了一個重載 + 號 的函式 , 目的是將兩個 CWin 物件相加,
此物件是一個視窗, 相加結果是取視窗最大的寬高當作新視窗的寬高,
然後把新視窗的 title 設為 "new win"
CWin operator+(CWin &w)
{
int width,height;
width = this->width > w.width ? this->width: w.width;
height = this->height > w.height ? this->height : w.height;
return CWin(100,width,height,"new win");
}
CWin 的內容
class CWin
{
private:
int id;
int width;
int height;
char *title;
...
};
在 main 裡頭
win3 = win1+win2;
問題來了
我寫了一個解構函式
~CWin()
{
cout<<"win"<<id<<" was destructed! \n";
delete [] title;
system("pause");
}
跑完 operator+ 後
這行 return CWin(100,width,height,"new win")
這個 CWin 新視窗會隨著函式結束呼叫解構而被銷毀
title 這塊記憶體會被釋放, 但是如果不釋放, 會造成 memory leak
請問到底該怎麼寫....
才不會 memory leak , win3 又可以在 operator+ 裡 設定新 title ... ??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.219.68.170
※ 編輯: aquatear 來自: 61.219.68.170 (05/15 10:51)
推
05/15 11:00, , 1F
05/15 11:00, 1F
→
05/15 11:00, , 2F
05/15 11:00, 2F
→
05/15 11:16, , 3F
05/15 11:16, 3F
→
05/15 11:17, , 4F
05/15 11:17, 4F
推
05/15 11:46, , 5F
05/15 11:46, 5F
→
05/15 11:47, , 6F
05/15 11:47, 6F
→
05/15 11:47, , 7F
05/15 11:47, 7F
→
05/15 11:48, , 8F
05/15 11:48, 8F
→
05/15 13:30, , 9F
05/15 13:30, 9F
→
05/15 13:30, , 10F
05/15 13:30, 10F
推
05/15 13:59, , 11F
05/15 13:59, 11F
推
05/15 14:16, , 12F
05/15 14:16, 12F
→
05/16 06:38, , 13F
05/16 06:38, 13F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章