函數(shù)重載可用于實(shí)現(xiàn)多態(tài)性,即通過基類指針調(diào)用派生類方法,編譯器根據(jù)實(shí)際參數(shù)類型選擇重載版本。示例中,animal 類定義虛擬 makesound() 函數(shù),dog 和 cat 類重寫該函數(shù),通過 animal* 指針調(diào)用 makesound() 時(shí),編譯器會(huì)基于指向的對象類型調(diào)用相應(yīng)的重寫版本,從而實(shí)現(xiàn)多態(tài)性。
C++ 函數(shù)重載如何實(shí)現(xiàn)多態(tài)性
什么是函數(shù)重載?
函數(shù)重載是一種將多個(gè)具有相同名稱但參數(shù)類型或數(shù)量不同的函數(shù)定義于同一作用域內(nèi)的編程技術(shù)。
如何使用函數(shù)重載實(shí)現(xiàn)多態(tài)性?
多態(tài)性是一種允許通過基類指針或引用調(diào)用派生類方法的功能。C++ 中函數(shù)重載與多態(tài)性的關(guān)系如下:
函數(shù)重載允許為具有相同名稱但不同簽名(參數(shù)類型或數(shù)量)的函數(shù)創(chuàng)建多個(gè)版本。
當(dāng)通過基類指針或引用調(diào)用派生類方法時(shí),編譯器會(huì)根據(jù)實(shí)際參數(shù)的類型選擇要調(diào)用的重載版本。
實(shí)戰(zhàn)示例
以下代碼展示了如何使用函數(shù)重載實(shí)現(xiàn)多態(tài)性:
#include <iostream>
class Animal {
public:
virtual void makeSound() { // 聲明為虛函數(shù)
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(); // 調(diào)用 Dog::makeSound()
// 指向 Cat 對象
animalptr = new Cat();
animalptr->makeSound(); // 調(diào)用 Cat::makeSound()
delete animalptr;
return 0;
}
登錄后復(fù)制
輸出:
Woof woof Meow meow
登錄后復(fù)制






