爱问知识人 爱问共享资料 医院库

谁来帮我解答这个C 的题??谢谢啦帮帮忙 很重要的

首页

谁来帮我解答这个C++的题??谢谢啦帮帮忙 很重要的

给出如下程序运行结果,并写上必要的注释和分析产生该运行结果的原因。(1)#include<iostream.h>#include<stdlib.h>classA{ (){cout<<"InclassA."<<endl;}virtual~A(){};}; { (){cout<<"InclassB."<<endl;}}; { (){cout<<"InclassC."<<endl;}}; { (){cout<<"InclassD."<<endl;}};voidmain(){A*p[]={newA(),newB(),newC(),newD()};inti,j;for(i=0;i<20;i++){j=rand()%4;p[j]->print();}for(i=0;i<4;i++)deletep[i];}运行结果:

提交回答
好评回答
  • 2006-06-10 17:06:31
      这段程序首先定义了类A,类A中有一个虚拟的成员函数print()用于输出类A的信息。
    然后定义了类A的子类B,类B中重载了print(),用于输出类B的信息。
    再定义了类A的另一个子类C,类C中也重载了print(),用于输出类C的信息。
       又定义了类B的子类D,类D中再次重载了print(),用于输出类D的信息。 再来说main(),在主函数中首先声明了一个类A的指针数组,共四个元素,依次保存了A、B、C、D四个类的指针。接着调用一个循环,随机地输出各指针的print(),虽然数组p被定义为类A的指针,但是由于print()为虚函数,所以最终被调用的print()为相应的子类指针的print()。
      关于这一点,你可以将“j=rand()%4”改为“j=i%4”试试,最终的输出结果必然是依次循环排列的A、B、C、D。主函数的最后将新建的指针全部删除,这是为了避免内存泄漏。 由于主函数的功能是随机输出各个子类的print(),因此在不同的机器上可能运行的结果不会完全相同。
      在本机上的运行结果如下: In class B。 In class D。 In class C。 In class A。 In class B。 In class A。 In class C。 In class C。 In class C。
       In class A。 In class B。 In class B。 In class B。 In class D。 In class B。 In class D。 In class D。 In class C。 In class D。
       In class A。 这个例程的主要目的是为了让你明白虚函数的意义及执行方式。

    b***

    2006-06-10 17:06:31

类似问题

换一换
  • 图像处理软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈
关注
爱问

关注爱问微信公众号,开启知识之旅,随时随地了解最新资讯。

确定举报此问题

举报原因(必选):