作者aquatear (米虫)
看板C_and_CPP
标题Re: [问题] 问一个物件相加 operator+ 的问题....
时间Fri May 15 14:41:05 2009
※ 引述《aquatear (米虫)》之铭言:
: 写了一个重载 + 号 的函式 , 目的是将两个 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");
: }
老实说, 我还有一个很大的疑问
听说:
动态配置的记忆体, 必须靠自己 delete , 才会正常呼叫解构
但是我把 operator+ 改成如下
CWin operator+(CWin &w)
{
int width,height;
CWin *pWin;
width = this->width > w.width ? this->width: w.width;
height = this->height > w.height ? this->height : w.height;
pWin = new CWin(100,width,height,"new win");
return *pWin;
}
我动态配置一个新的物件 *pWin
结果在执行完 win1=win2+win3 之後
这个 pWin 会自己呼叫解构把里面的资料销毁... 这实在非常奇怪
不知道有人可以解释吗 ?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.219.68.170
1F:推 Ebergies:pWin 并没有呼叫解构... 是你回传的 CWin 呼叫的... 05/15 14:50
2F:→ aquatear:还是不太了解... 照理说动态配置应该不会呼叫解构才对 ? 05/15 15:58
3F:→ fuha:应该是你其它地方有呼叫了吧 05/15 16:31
4F:推 legnaleurc:pWin复制了一份给暂时物件,解构是暂时物件解构 05/15 16:40
5F:→ legnaleurc:pWin并没有解构 05/15 16:40