• 104.virtual虚函数多态与异构数据结构


      1 #include "mainwindow.h"
      2 #include <QApplication>
      3 #include <list>
      4 #include <QPushButton>
      5 #include<QLabel>
      6 #include<QLineEdit>
      7 
      8 using namespace std;
      9 
     10 //异构数据结构,每个数组元素都是基类指针
     11 //异构链表,每一个结点都是基类的指针,指向了派生类
     12 //基类指针基于多态与虚函数调用派生类的方法
     13 
     14 class object
     15 {
     16 public:
     17     virtual void showit()
     18     {
     19 
     20     }
     21 };
     22 
     23 class mywindow:public object
     24 {
     25 public:
     26     MainWindow *p;
     27 
     28     mywindow()
     29     {
     30         p = new MainWindow;
     31     }
     32 
     33     void showit()
     34     {
     35         p->show();
     36      }
     37 };
     38 
     39 class mylabel:public object
     40 {
     41 public:
     42     QLabel *p;
     43     mylabel()
     44     {
     45         p=new QLabel;
     46     }
     47     void showit()
     48     {
     49         p->show();
     50     }
     51 };
     52 
     53 class myedit:public object
     54 {
     55 public:
     56     QLineEdit *p;
     57     myedit()
     58     {
     59         p=new QLineEdit;
     60     }
     61     void showit()
     62     {
     63         p->show();
     64     }
     65 };
     66 
     67 class mybutton:public object
     68 {
     69   public:
     70     QPushButton *p;
     71     mybutton()
     72     {
     73         p = new QPushButton;
     74     }
     75 
     76     void showit()
     77     {
     78         p->show();
     79     }
     80 };
     81 
     82 int main(int argc, char *argv[])
     83 {
     84     QApplication a(argc, argv);
     85 
     86     list<object *>mylist;
     87 
     88     object *p = new mywindow;
     89     mylist.push_back(p);
     90 
     91     p = new mylabel;
     92     mylist.push_back(p);
     93 
     94     p = new mybutton;
     95     mylist.push_back(p);
     96 
     97     p = new mybutton;
     98     mylist.push_back(p);
     99 
    100     for(auto it:mylist)
    101     {
    102         (*it).showit();
    103     }
    104     return a.exec();
    105 }
  • 相关阅读:
    c 概念详解
    c 目录
    win文件操作
    使用panads处理数据
    冒泡排序
    notepad++搭建python环境
    继承方法-->一级一级继承
    原型问题2—原型对象的替换
    原型问题1—原型对象的替换
    js继承——扩展Object方式实现继承
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8604009.html
Copyright © 2020-2023  润新知