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

📄 subject_50783.htm

📁 vc
💻 HTM
字号:
<p>
序号:50783 发表者:ellen_wu 发表日期:2003-08-26 14:33:35
<br>主题:有关((ib*)pia)-&gt;fb2();这个问题我还是要再请教一个各位!
<br>内容:#include &lt;iostream&gt;<BR> <BR>using namespace std;<BR><BR>class ia<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fa1()=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fa2()=0;<BR>};<BR><BR>class ib<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fb1()=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fb2()=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fb3()=0;<BR>};<BR><BR>class ab:public ia,ib<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fa1();<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fa2();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fb1();<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fb2();<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual fb3();<BR>};<BR>#define ff(x) ab::x(){cout&lt;&lt;#x&lt;&lt;endl;return 0;}<BR><BR>ff(fa1)<BR>ff(fa2)<BR>ff(fb1)<BR>ff(fb2)<BR>ff(fb3)<BR><BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia * pia= new ab;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//pia -&gt;fa1();<BR>&nbsp;&nbsp;&nbsp;&nbsp;((ib*)pia)-&gt;fb2();<BR>}<BR><BR><BR>“((ib*)pia)-&gt;fb2();pia虽然被强制转换成*ib,但是它依然指向ia的虚表,”<BR>——这句我已经理解意思<BR><BR>“当它调用fb2()时,需要偏移2个位置,但是它指向的是ia的虚表,偏移2个位置后调用了fa2()”<BR>——这句不懂,既然指针PIA还是指向IA,那如何通过FB2()来决定这个偏移量的呢?这部分是如何执行的?<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>回复者:toxin 回复日期:2003-08-30 09:30:52
<br>内容:&#34;pia虽然被强制转换成*ib,但是它依然指向ia的虚表,”<BR>不对!pia还是一样,他又没有被赋植.只是(ib*)pia会生成一个临时的指针,该临时指针由ia*类型强制转换为ib*,所以指向的是ib的vtble(指针值偏移而改变)。<BR>可参考:http://www.vclightning.net/list.asp?articleid=2
<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 + -