⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_60150.htm

📁 vc
💻 HTM
字号:
<p>
序号:60150 发表者:xiaogang_2000 发表日期:2003-11-12 09:35:56
<br>主题:为什么可以没有对象?
<br>内容:为什么可以没有对象?<BR>以下是调试通过的程序:<BR>class CDrawObj : public CObject<BR>{....<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual int GetHandleCount();<BR>}<BR><BR>class CDrawRect : public CDrawObj<BR>{.....<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual int GetHandleCount();<BR>}<BR><BR>void CDrawObj::DrawTracker(CDC* pDC, TrackerState state)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT_VALID(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;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-&gt;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 + -