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

📄 subject_38895.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:38895 发表者:IEEE 发表日期:2003-05-06 21:08:44
<br>主题:C++问题
<br>内容:#include "iostream.h"<BR>#include "string.h"<BR>class A<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;&nbsp;&nbsp;&nbsp; ~A() {cout&lt;&lt;"A::~A() called!\n";}<BR>};<BR><BR>class B:public A<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;B(int i) {buf=new char[i];}<BR>&nbsp;&nbsp;&nbsp;&nbsp;~B() {delete []buf; cout&lt;&lt;"B::~B() called!\n";}<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;char *buf;<BR>};<BR><BR>void fun (A *a) { delete a; }<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;A *a=new B(15);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//B b(19);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//a=&amp;b;<BR>&nbsp;&nbsp;&nbsp;&nbsp;fun(a);<BR>}<BR>该程序运行时,析构函数的调用实现了多态性,编译通过,运行正常。<BR>但是将其中的两条注释掉的语句加入main()之后,编译通过,但运行时出了问题!<BR>&nbsp;&nbsp;&nbsp;&nbsp;请指点。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Justin Le 回复日期:2003-05-06 21:53:53
<br>内容://可以运行,没明白你的意思<BR>#include "iostream.h"<BR>#include "string.h"<BR>#include &lt;stdio.h&gt;<BR>class A<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;&nbsp;&nbsp;&nbsp; ~A() {cout&lt;&lt;"A::~A() called!\n";}<BR>};<BR><BR>class B:public A<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;B(int i) {printf("in B %d\n",i);buf=new char[i];}<BR>&nbsp;&nbsp;&nbsp;&nbsp;~B() {delete []buf; cout&lt;&lt;"B::~B() called!\n";}<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;char *buf;<BR>};<BR><BR>void fun (A *a) { delete a; }<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;A *a=new B(15);<BR>&nbsp;&nbsp;&nbsp;&nbsp;B b(19);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a=&amp;b;<BR>&nbsp;&nbsp;&nbsp;&nbsp;fun(a);<BR>}<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>回复者:ArthurTu 回复日期:2003-05-06 23:04:05
<br>内容:A *a=new B(15);<BR>&nbsp;&nbsp;&nbsp;&nbsp;B b(19);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a=&amp;b;<BR>fun(a);<BR>pointer a开始指向new出来的一个B的实例,然后有把他指向另外一个B的实例(还不是new出来的)!然后又在fun里面delete不是new出来的这个实例!<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>
回复者:IEEE 回复日期:2003-05-10 10:00:13
<br>内容:我已经找到答案了,谢谢大家!
<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 + -