模板代替虚函数实现多态-- 发布日期:2008-04-24 13:05

原创 2008年10月02日 18:27:00

虚函数和继承的实现:

class File {
   public:
      virtual void Open() = 0;
      virtual void Save() = 0;
      virtual void SaveAS(String&) = 0;
      virtual void Close() = 0;
};
class TextFile:public File{
   public:
      void Open();
      void Save();
      void SaveAS(String&);
      void Close();
};
class ImageFile:public File{
   public:
      void Open();
      void Save();
      void SaveAS(String&);
      void Close();
};

// user menu selection to open the file
void menu_open_file(File* f_ptr){
   f_ptr->Open();
   ....
   ...
}
By using the above code, you would have the following:
File *file_ptr = new TextFile();
menu_open_file(file_ptr);//open the text file
.
.
file_ptr = new ImageFile();
menu_open_file(file_ptr);//open the image file

模板的实现:

class TextFile{
public:
   void Open();
};

class ImageFile{
public:
void Open();
};

//user menu selection to open the file

template<typename T> void menu_open_file(T file){
   file.Open();
}
Using the code:
TextFile txt_file;
ImageFile img_file;
menu_open_file(txt_file);    //open the text file
menu_open_file(img_file);    //open the image file

利用C++模板,代替虚函数,实现类的静态多态性

文章来源 http://www.cppblog.com/woaidongmao/archive/2008/05/22/50805.aspx 熟悉模板编程的朋友或许听到过这个技巧或者模式:Barton...
  • yangdelong
  • yangdelong
  • 2017年01月03日 11:09
  • 1005

c++ 虚函数实现多态的原理

前面的文章说过了c++如何实现多态,最主要的就是使用虚函数,另一种方法就是RTTI,这里我们不做说明了。前面说过编译器是这样实现晚绑定的:编译器对每一个含有virtual函数的类创建一个虚函数表vta...
  • u014489596
  • u014489596
  • 2014年08月15日 12:46
  • 1570

关于虚函数和多态(很好的解释)

C++:派生类中重定义基类的成员函数与虚函数区别在哪里?
  • foreverhuylee
  • foreverhuylee
  • 2014年07月17日 12:15
  • 2155

C++学习笔记之多态(虚函数)

多态可以分为静态的多态和动态多态,静态多态即所谓的函数重载,在编译阶段即可确定是使用哪个函数。动态多态是通过虚函数来实现的,并基于类的继承来表现。 在使用过程中应注意以下几点: 1、虚函数使用过程中,...
  • ljp1919
  • ljp1919
  • 2015年10月03日 15:16
  • 974

C++的多态与虚函数

多态的作用:继承是子类使用父类的方法,而多态则是父类使用子类的方法。 在C++中,多态有两种,一种是函数重载,一种是虚函数。函数重载发生在编译的时候,它的函数参是不一样的。而虚函数是发生在运行的时候,...
  • chencheng126
  • chencheng126
  • 2015年01月06日 21:49
  • 1732

构造函数中调用虚函数能否实现多态

问:构造函数中调用虚函数能否实现多态? #include using namespace std; class Parent { public: Parent(int a = 0) { t...
  • bbs375
  • bbs375
  • 2016年09月25日 08:26
  • 714

多态,虚函数,纯虚函数

①多态:多态可以增加其灵活性,小程序凸显不出多态的威力。 1:创建类,定义虚函数            定义:  关键字:virtual 类型 名字(){}  虚函数对于多态具有决定性的作用,有虚函数...
  • laofengge
  • laofengge
  • 2016年08月22日 14:29
  • 1802

C++动多态实现之虚函数与虚表指针

最近在学习C++的动多态时,了解到关于虚函数表与虚表指针的知识点,感觉很有意思,因此总结记录下来(依据个人理解而写,欢迎批评指正)。1、静多态与命名倾轧,动多态与虚函数:(1)概述: 我们知道,C+...
  • Apollon_krj
  • Apollon_krj
  • 2017年03月27日 18:07
  • 757

继承多态与虚函数及对类的理解

B是A的子类,子类会继承父类的public方法,子类对象可以调用父类的public接口,但是子类和父类函数重名时,父类的方法会被子类覆盖(隐藏),子类调用和父类同名同参函数或者重载父类的函数后不可以直...
  • qq_35956442
  • qq_35956442
  • 2016年11月17日 13:41
  • 383

C++虚函数详解&实现机制&多态性

转载:http://blog.chinaunix.net/uid-24178783-id-370328.html
  • tcherry
  • tcherry
  • 2014年10月07日 15:03
  • 1084
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模板代替虚函数实现多态-- 发布日期:2008-04-24 13:05
举报原因:
原因补充:

(最多只允许输入30个字)