首頁 >後端開發 >C++ >C++ 函式重載如何實現多態性?

C++ 函式重載如何實現多態性?

PHPz
PHPz原創
2024-04-13 12:21:01632瀏覽

函數重載可用於實現多態性,即透過基底類別指標呼叫衍生類別方法,編譯器根據實際參數類型選擇重載版本。範例中,Animal 類別定義虛擬makeSound() 函數,Dog 和Cat 類別重寫函數,透過Animal* 指標呼叫makeSound() 時,編譯器會基於指向的物件類型呼叫對應的重寫版本,從而實現多態性性。

C++ 函数重载如何实现多态性?

C 函式重載如何實作多型別

什麼是函式重載?

函數重載是一種將多個具有相同名稱但參數類型或數量不同的函數定義於相同作用域內的程式設計技術。

如何使用函數重載實現多態性?

多態性是一種允許透過基底類別指標或引用呼叫衍生類別方法的功能。 C 中函數重載與多型性的關係如下:

  • 函數重載允許為具有相同名稱但不同簽章(參數型別或數量)的函式建立多個版本。
  • 當透過基底類別指標或引用呼叫派生類別方法時,編譯器會根據實際參數的類型選擇要呼叫的重載版本。

實戰範例

以下程式碼展示如何使用函數重載實作多態性:

#include <iostream>

class Animal {
public:
    virtual void makeSound() {  // 声明为虚函数
        std::cout << "Animal sound" << std::endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {  // 重写 makeSound()
        std::cout << "Woof woof" << std::endl;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {  // 重写 makeSound()
        std::cout << "Meow meow" << std::endl;
    }
};

int main() {
    Animal* animalptr;  // 基类指针

    // 指向 Dog 对象
    animalptr = new Dog();
    animalptr->makeSound();  // 调用 Dog::makeSound()

    // 指向 Cat 对象
    animalptr = new Cat();
    animalptr->makeSound();  // 调用 Cat::makeSound()

    delete animalptr;

    return 0;
}

輸出:

Woof woof
Meow meow

以上是C++ 函式重載如何實現多態性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn