📄 subject_34230.htm
字号:
<p>
序号:34230 发表者:小抱枕 发表日期:2003-03-27 20:38:27
<br>主题:为什么要调用A中的f()
<br>内容:#include<iostream.h><BR>class A<BR>{<BR>public:<BR> A(){}<BR> virtual void f(){cout<<"A::f() called.\n";}<BR>};<BR>class B:public A<BR>{<BR>public:<BR> B(){f();}<BR> void g(){f();}<BR>};<BR>class C:public B<BR>{<BR>public:<BR> C(){f();}<BR> virtual void f(){cout<<"C::f() called.\n";}<BR>};<BR>void main()<BR>{<BR> C c;<BR> c.g();<BR>}<BR><BR><BR><BR>C类有构造函数f()为什么结果还是要调用A中的f()<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-03-27 22:09:32
<br>内容:因为C类的构造函数会调用B类的构造函数,在B类中没有重载f函数,所以调用A类中的f函数。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小抱枕 回复日期:2003-03-27 23:31:28
<br>内容:C类的构造函数为什么会调用B类的构造函数呢
<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>回复者:sdfsd 回复日期:2003-03-28 09:05:26
<br>内容:构造一个派生类时,得首先构造它的基类:<BR>1、C-B-A,首先构造A,A的构造函数为空,没有显示。<BR>2、再构造B,B的构造函数是执行f(),由于B中没有重载f(),执行A中的f()。<BR>3、构造C,C中覆盖了f(),调用C中的f()。<BR>4、C继承了B中的g(),g()执行f(),由于C中重载了f()函数,执行C中f()。
<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 + -