c++抽象類(lèi)怎么定義和使用

c++
小億
142
2023-11-09 23:43:50

在C++中,抽象類(lèi)是一種特殊的類(lèi),不能被實(shí)例化,只能被用作其他類(lèi)的基類(lèi)。抽象類(lèi)通常用于定義一組相關(guān)的方法的接口,而不提供具體的實(shí)現(xiàn)。下面是定義和使用抽象類(lèi)的步驟:

  1. 定義抽象類(lèi):通過(guò)在類(lèi)定義中添加純虛函數(shù)(沒(méi)有實(shí)現(xiàn)的虛函數(shù))來(lái)定義抽象類(lèi)。純虛函數(shù)可以通過(guò)在函數(shù)聲明后面加上“=0”來(lái)標(biāo)識(shí)。
class AbstractClass {
public:
    virtual void foo() = 0; // 純虛函數(shù)
};
  1. 派生子類(lèi):派生一個(gè)具體的子類(lèi)來(lái)實(shí)現(xiàn)抽象類(lèi)中的純虛函數(shù)。
class ConcreteClass : public AbstractClass {
public:
    void foo() {
        // 實(shí)現(xiàn)純虛函數(shù)
    }
};
  1. 使用抽象類(lèi):通過(guò)抽象類(lèi)的指針或引用來(lái)訪(fǎng)問(wèn)具體的子類(lèi)。
AbstractClass* obj = new ConcreteClass();
obj->foo(); // 調(diào)用子類(lèi)實(shí)現(xiàn)的純虛函數(shù)
delete obj;

需要注意的是,由于抽象類(lèi)不能被實(shí)例化,只能通過(guò)指針或引用來(lái)訪(fǎng)問(wèn),所以通常需要使用動(dòng)態(tài)內(nèi)存分配來(lái)創(chuàng)建抽象類(lèi)的對(duì)象。另外,如果一個(gè)類(lèi)繼承了抽象類(lèi),但沒(méi)有實(shí)現(xiàn)所有的純虛函數(shù),那么該類(lèi)也會(huì)變成抽象類(lèi),無(wú)法被實(shí)例化。

0