subject_22598.htm

来自「一些关于vc的问答」· HTM 代码 · 共 9 行

HTM
9
字号
<p>
序号:22598 发表者:一个苦瓜 发表日期:2002-11-27 00:03:35
<br>主题:怎样解释?
<br>内容:#include "iostream.h"<BR>class CShape<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void display() {cout&lt;&lt;"Shape"&lt;&lt;endl;}<BR>};<BR>class CEllipse:public CShape<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void display() {cout&lt;&lt;"Ellipse"&lt;&lt;endl;}<BR>};<BR>class CCircle:public CShape<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void display() {cout&lt;&lt;"Circle"&lt;&lt;endl;}<BR>};<BR>class CTriangle:public CShape<BR>{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void display() {cout&lt;&lt;"Triangle"&lt;&lt;endl;}<BR>};<BR>class CRect:public CShape<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void display() {cout&lt;&lt;"Rect"&lt;&lt;endl;}<BR>};<BR>class CSquare:public CShape<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void display() {cout&lt;&lt;"Square"&lt;&lt;endl;}<BR>};<BR>void main()<BR>{<BR> CShape aShape;<BR> CEllipse aEllipse;<BR> CCircle aCircle;<BR> CTriangle aTriangle;<BR> CRect aRect;<BR> CSquare aSquare;<BR> CShape* pShape[6]={&amp;aShape,&amp;aEllipse,&amp;aCircle,&amp;aTriangle,&amp;aRect,&amp;aSquare};<BR> for(int i=0;i&lt;6;i++)<BR> pShape[i]-&gt;display();<BR> }<BR><BR>程序运行的结果为:aShape<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aShape<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aShape<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aShape<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aShape<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aShape<BR>怎样解释运行的结果?我知道把display()定义成virtual即可得到预期的结果,现在只想问现在的结果怎样解释?
<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>回复者:John Lan 回复日期:2002-11-27 00:23:30
<br>内容:1, c++编译器绑定c++成员函数时有两种方式,静态和动态,也可以对应叫early-binding<BR>&nbsp;&nbsp; lately-binding<BR>2, 动态绑定要满足两个条件:<BR>&nbsp;&nbsp; 1:通过指针去调用 2:c++类有virtual函数<BR><BR>你的sample只能是静态绑定的例子,即使通过指针去调用成员函数。<BR>所谓静态绑定,即编译器只根据你的对象或者对象指针的类型去绑定函数<BR>不管你这个对象/指针到底是不是真的这种类型。<BR>因为你用pShape call,所以你的6个call都是一样的结果.<BR>2002-11-27 0:24:42

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?