CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

继续昨天的问题,虚函数和纯虚函数在应用中的问题

楼主juqi777()2006-11-02 10:56:06 在 C/C++ / C++ 语言 提问

我在基类中定义一个空虚函数和纯虚函数,再在基类下定义派生类,在实际的调用过程中有什么地方不同,或出错?  
  例:  
  class   Virtualbase  
  {  
  public:  
  virtual   void   Demon(){};   //prue   virtual   function  
                或virtual   void   Demon()=   0;  
  virtual   void   Base()   {cout<<"this   is   farther   class";}  
  };  
  class   SubVirtual   :public   Virtualbase  
  {  
  public:  
  void   Demon()   {   cout<<"   this   is   SubVirtual!";}  
  void   Base()   {   cout<<"this   is   subclass   Base!";}  
  };  
  可以用指针或对象来调,有什么区别,会不会出错? 问题点数:20、回复次数:9Top

1 楼lw1a2(一刀 现在改六点下班了:()回复于 2006-11-02 10:57:36 得分 0

昨天的揭帖了吗Top

2 楼adintr(www.adintr.com)(风流总被雨打风吹去)回复于 2006-11-02 10:59:18 得分 0

没什么区别,只是一个可以直接生成   Virtualbase   对象,一个不能Top

3 楼taodm((不能收CSDN社区短信息,请莫浪费精力))回复于 2006-11-02 11:00:50 得分 0

拜托楼主,能不能找本C++   Primer看看什么叫纯虚函数呀。  
  C++   Primer   3e   P758明确写着呢Top

4 楼juqi777()回复于 2006-11-02 11:04:42 得分 0

再使用过程就不会不出错吗?能不能写点调用代码来说明下.我也知道你说的纯虚不能有对象,但要讲出两者在使用过程出的问题.但这是我们组长要求我们解决的.Top

5 楼lann64(昆仑大鹏@迦楼罗)回复于 2006-11-02 11:09:13 得分 10

给你段代码,去运行一下看看。  
  #include   <iostream>  
   
  using   namespace   std;  
  class   Virtualbase  
  {  
  public:  
  //virtual   void   Demon(){};   //prue   virtual   function  
  virtual   void   Demon()=   0;  
  virtual   void   Base()   {cout<<"this   is   farther   class"<<endl;}  
  };  
  class   SubVirtual   :public   Virtualbase  
  {  
  public:  
  void   Demon()   {   cout<<"   this   is   SubVirtual!"<<endl;}  
  void   Base()   {   cout<<"this   is   subclass   Base!"<<endl;}  
  };  
  int   main()  
  {  
  Virtualbase*   a;  
  SubVirtual   b;  
  a=&b;  
  a->Demon();  
  a->Base();  
  a->Virtualbase::Base();  
  b.Demon();  
  b.Base();  
  }Top

6 楼fflush(stdin)回复于 2006-11-02 11:12:02 得分 0

Virtualbase   base;//如果是纯虚函数,这句会出现编译错误,如果不是,这句编译通过。  
   
  上面就是区别,其他的没有什么不同  
   
   
  再使用过程就不会不出错吗?能不能写点调用代码来说明下.我也知道你说的纯虚不能有对象,但要讲出两者在使用过程出的问题.但这是我们组长要求我们解决的.  
  -------------------------------------------------  
   
  你们那个组是干吗的。。。Top

7 楼anrui32(命令提示符(anrui32@163.com))回复于 2006-11-02 11:17:36 得分 10

纯虚函数在在派生类中实现以后,派生类才能INIT对象,否则派生类仍然是一个抽象类。  
  虚函数简单一句话就是,子类有调用子类,子类没调用父类。  
          因为子类的构造必须先构造鸡肋,当鸡肋INIT派生类的时候就会发生成员的COPY,所以鸡肋的THIS指针可以指向对象。Top

8 楼juqi777()回复于 2006-11-02 11:43:17 得分 0

做BREW的,现在没任务在复习C++的知识.Top

9 楼juqi777()回复于 2006-11-02 13:34:47 得分 0

对了哪有DesignPattern(设计模式C++版)哪里有下载?Top

相关问题

关键词

得分解答快速导航

  • 帖主:juqi777
  • lann64
  • anrui32

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo