subject_19566.htm
来自「一些关于vc的问答」· HTM 代码 · 共 12 行
HTM
12 行
<p>
序号:19566 发表者:VisualKid 发表日期:2002-10-29 20:25:11
<br>主题:this 问题
<br>内容:在深入浅出MFC中 P53<BR><BR>如果<BR>class CShape{<BR> int m_color;<BR>public:<BR>void setcolr(int color){m_color=color};<BR>}<BR><BR>class CRect :public CShape<BR>{<BR><BR> int m_color;<BR>}<BR><BR>void f1()<BR>{<BR>CRect R;<BR>R.setcolor(5);<BR>}<BR>是那一个m_color被赋值。<BR><BR>按<BR>void setcolr(int color)被编译成:<BR>void setcolor(int color,(CShape*)this){this->m_color=color);<BR><BR>而编译器对于R.setcolor(5)作出:<BR>CShape::setcolor(5,(CRect*)&R1);<BR>这里this 指向 R1,<BR>*--不知this 是如何定义的?<BR>因为如果this 是基类的指针,现在随指向R1,但按照虚函数的说法,<BR>现在是向CShape::m_color赋值。当然不能按虚函数的说法来对待<BR>成员变量,但有是如何对待的。<BR>也许this 一开始就是个void * 这样就不存在什么问题了。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:凯凯 回复日期:2002-10-29 21:12:41
<br>内容:在你的代码中,R是一个对象,不是指针或引用,是不会引发多态的。应该是CRect类的成员函数被赋值。
<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 + =
减小字号Ctrl + -
显示快捷键?