zoukankan      html  css  js  c++  java
  • C++开发系列-纯虚函数和抽象类

    概念

    纯虚函数和抽象类

    • 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都实现该函数。
    • 纯虚函数为各派生类提供了一个公共界面(接口的封装和设计、软件的模块功能的划分)

    纯虚函数说明的形式

    一个具有纯虚函数的基类称之为抽象类。

    抽象类可以声明抽象类指针,通过抽象类指针调用子类的方法,类似java的接口。但是不可以实例化对象。

    定义一基类Person

    #ifndef Person_hpp
    #define Person_hpp
    
    #include <stdio.h>
    
    class Person // 抽象类
    {
    public:
        virtual void run() = 0; // 纯虚函数
        virtual void eat() = 0;
    };
    #endif /* Person_hpp */
    

    定义一个Teacher类集成Person类,实现Person的虚构函数

    /**-------------------------Teacher.h--------------------------*/
    #include <stdio.h>
    #include "Person.hpp"
    class Teacher: public Person
    {
    public:
        virtual void run();
        virtual void eat();
        
    private:
        char *name;
    };
    
    /**-------------------------Teacher.cpp--------------------------*/
    #include "Teacher.hpp"
    
    void Teacher::run(){
        printf("Teacher----------run
    ");
    }
    
    void Teacher::eat()
    {
        printf("Teacher----------eat
    ");
    }
    

    抽象类的使用

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        // 抽象类指针指向子类的示例
        Person *p = new Teacher();
        p->eat(); // 通过抽象类指针调用子类示例的方法
        p->run();
        
    }
    
  • 相关阅读:
    2017 Multi-University Training Contest
    NTT模板
    重庆OI2017 小 Q 的棋盘
    用TensorFlow2.0构建分类模型对数据集fashion_mnist进行分类
    读取keras中的fashion_mnist数据集并查看
    基本类型和引用类型
    idea快捷键
    pytorch的torch.nn.CrossEntropyLoss()
    高斯模糊和高斯双边滤波
    opencv之模糊操作
  • 原文地址:https://www.cnblogs.com/CoderHong/p/9121725.html
Copyright © 2011-2022 走看看