【C++】Item34.区分接口继承和实现继承

区分接口继承和实现继承ide

类包含的成员函数种类函数

1.静态函数spa

2.非静态函数code

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

  2.2 虚函数继承

    2.2.1 纯虚函数 pure-virtual接口

    2.2.2 非纯虚函数 impure-virtualci

1、接口继承string

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

2、实现继承

继承类若有须要能够覆写(override)基类的impure-virtual函数,当不覆写时将使用基类提供的默认实现

3、普通非虚函数

继承类不该声明实现此类函数,不然该继承类将隐藏基类的实现。此类函数的意义就是强制全部继承类都使用基类的实现。

 

例子: 绘图类结构中, 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
    }    
};
相关文章
相关标签/搜索