📄 subject_60150.htm
字号:
<p>
序号:60150 发表者:xiaogang_2000 发表日期:2003-11-12 09:35:56
<br>主题:为什么可以没有对象?
<br>内容:为什么可以没有对象?<BR>以下是调试通过的程序:<BR>class CDrawObj : public CObject<BR>{....<BR>public:<BR> virtual int GetHandleCount();<BR>}<BR><BR>class CDrawRect : public CDrawObj<BR>{.....<BR>public:<BR> virtual int GetHandleCount();<BR>}<BR><BR>void CDrawObj::DrawTracker(CDC* pDC, TrackerState state)<BR>{<BR> ASSERT_VALID(this);<BR> int nHandleCount = GetHandleCount();<BR>}<BR>问题是<BR>1、最后一句GetHandleCount()这个成员函数为什么前面可以没有对象?<BR>2、通过单步运行,最后一句调用的是CDrawRect::GetHandleCount(),为什么不调用CDrawObj::GetHandleCount()?<BR>mc_77@sina.com<BR>qq:56700320<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:菜的嗷嗷直哭 回复日期:2003-11-12 13:28:49
<br>内容:GetHandleCount()是该类的共有成员函数,该函数的对象为this指针中的实例。因为该函数是virtual.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiaogang_2000 回复日期:2003-11-13 09:06:10
<br>内容:还是没看清楚,能不能详细点.谢谢
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐相华 回复日期:2003-11-13 15:53:59
<br>内容:在类实现文件里,使用自己的成员函数不需对象,等效于this->GetHandleCount();它调用的是CDrawRect::GetHandleCount(),是因为这个this指向的是CDrawRect对象。因为GetHandleCount是一个虚函数
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -