C++的虛函數是一種特殊的成員函數,用于實現多態。多態是面向對象編程的一個重要特性,它允許以統一的方式處理不同類型的對象。
虛函數通過在基類中聲明并在派生類中重新定義,實現了動態綁定(也稱為運行時多態)。當基類指針或引用指向派生類對象時,通過調用虛函數,可以根據實際的派生類類型來確定要執行的函數。
虛函數的聲明格式如下:
virtual 返回類型 函數名(參數列表) [const] = 0;
其中,virtual
關鍵字表示虛函數,= 0
表示該虛函數是純虛函數,需要在派生類中重新定義,而不能在基類中實現。
通過使用虛函數,可以實現類似于以下的多態行為:
class Animal {
public:
virtual void makeSound() {
cout << "Animal makes sound." << endl;
}
};
class Dog : public Animal {
public:
void makeSound() override {
cout << "Dog barks." << endl;
}
};
class Cat : public Animal {
public:
void makeSound() override {
cout << "Cat meows." << endl;
}
};
int main() {
Animal* animal1 = new Dog();
Animal* animal2 = new Cat();
animal1->makeSound(); // 輸出 "Dog barks."
animal2->makeSound(); // 輸出 "Cat meows."
delete animal1;
delete animal2;
return 0;
}
在上述示例中,Animal
類中的makeSound()
函數被聲明為虛函數。通過使用基類指針分別指向派生類對象,調用makeSound()
函數時,根據實際的派生類類型來確定執行的函數。