C++純虛類與抽象類的區(qū)別

c++
小樊
99
2024-08-02 20:35:15

C++中的純虛類和抽象類是兩個(gè)相關(guān)概念,但存在一些區(qū)別。

  1. 純虛類:一個(gè)類中含有純虛函數(shù)(即純虛函數(shù)只有函數(shù)聲明,沒(méi)有函數(shù)定義),則該類被稱為純虛類。純虛類不能實(shí)例化對(duì)象,只能作為基類被繼承。子類必須實(shí)現(xiàn)基類中的純虛函數(shù),否則子類也會(huì)成為純虛類。
class Base {
public:
    virtual void func() = 0; // 純虛函數(shù)
};

class Derived : public Base {
public:
    void func() override {
        // 實(shí)現(xiàn)純虛函數(shù)
    }
};
  1. 抽象類:含有純虛函數(shù)的類被稱為抽象類。抽象類可以包含非純虛函數(shù),也可以包含數(shù)據(jù)成員。抽象類不能實(shí)例化對(duì)象,只能作為基類被繼承。
class AbstractBase {
public:
    virtual void func() = 0; // 純虛函數(shù)
    virtual void func2() {
        // 非純虛函數(shù)
    }
};

class ConcreteDerived : public AbstractBase {
public:
    void func() override {
        // 實(shí)現(xiàn)純虛函數(shù)
    }
};

總的來(lái)說(shuō),純虛類是指所有的成員函數(shù)都是純虛函數(shù)的類,而抽象類是指含有至少一個(gè)純虛函數(shù)的類。在實(shí)際應(yīng)用中,抽象類更常見(jiàn),用于定義接口,而純虛類用于定義一些更加抽象的概念。

0