【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
    }    
};
相關文章
相關標籤/搜索