zoukankan      html  css  js  c++  java
  • 【C++】Item34.区分接口继承和实现继承

    区分接口继承和实现继承

    类包含的成员函数种类

    1.静态函数

    2.非静态函数

      2.1 普通函数(非虚) non-virtual

      2.2 虚函数

        2.2.1 纯虚函数 pure-virtual

        2.2.2 非纯虚函数 impure-virtual

    一、接口继承

    继承类必须要实现声明为pure-virtual的函数,意味每个继承类的特异化实现

    二、实现继承

    继承类如有需要可以覆写(override)基类的impure-virtual函数,当不覆写时将使用基类提供的默认实现

    三、普通非虚函数

    继承类不应声明实现此类函数,否则该继承类将隐藏基类的实现。此类函数的意义就是强制所有继承类都使用基类的实现。

    例子: 绘图类结构中, Shape作为抽象基类。

    #pragma once
    #include <string>
    class Shape
    {
    public:
        virtual ~Shape(){}
        virtual void Draw() = 0;
        virtual void Error(const std::string& msg);
        int ObjectId() const;
    
    protected:
    
    private:
    };
    
    class Rectangle : public Shape
    {
    public:
        void Draw() 
        {
            //draw rectangle
        }
    
        void Error(const std::string& msg)override
        {
            //...
        }
    };
    
    class Circle : public Shape
    {
    public:
        void Draw() 
        {
            //draw circle
        }    
    };
  • 相关阅读:
    清除浮动的四种方式
    简单的响应式-信息介绍
    Island Mentality
    六、排序-插入排序
    五、快速排序
    有关一些话
    有关学习态度
    无题
    四、链表的学习
    MySQ彻底删除与安装配置
  • 原文地址:https://www.cnblogs.com/neking/p/3528403.html
Copyright © 2011-2022 走看看