c++多態(tài)的實(shí)現(xiàn)方式有哪些

c++
小億
147
2024-06-05 16:30:27
欄目: 編程語言

在C++中,多態(tài)可以通過虛函數(shù)和純虛函數(shù)來實(shí)現(xiàn)。具體有以下幾種方式:

  1. 虛函數(shù)(virtual function):在基類中聲明一個(gè)虛函數(shù),派生類可以重寫這個(gè)虛函數(shù)。當(dāng)通過基類指針或引用調(diào)用這個(gè)虛函數(shù)時(shí),實(shí)際執(zhí)行的是派生類的版本。這種方式實(shí)現(xiàn)的多態(tài)稱為動(dòng)態(tài)多態(tài)。
class Base {
public:
    virtual void print() {
        cout << "Base class print function." << endl;
    }
};

class Derived : public Base {
public:
    void print() override {
        cout << "Derived class print function." << endl;
    }
};
  1. 純虛函數(shù)(pure virtual function):在基類中聲明一個(gè)純虛函數(shù),派生類必須實(shí)現(xiàn)這個(gè)純虛函數(shù)。基類對(duì)象不能被實(shí)例化,只能作為接口使用。這種方式實(shí)現(xiàn)的多態(tài)稱為靜態(tài)多態(tài)。
class Base {
public:
    virtual void print() = 0;
};

class Derived : public Base {
public:
    void print() override {
        cout << "Derived class print function." << endl;
    }
};
  1. 函數(shù)指針:可以使用函數(shù)指針來實(shí)現(xiàn)多態(tài),通過函數(shù)指針動(dòng)態(tài)調(diào)用不同的函數(shù)。
void print(Base *obj) {
    obj->print();
}

Base *basePtr = new Derived();
print(basePtr);
  1. 模板(template):可以使用模板來實(shí)現(xiàn)多態(tài),通過模板參數(shù)動(dòng)態(tài)調(diào)用不同的函數(shù)。
template<typename T>
void print(T *obj) {
    obj->print();
}

Base *basePtr = new Derived();
print(basePtr);

0