在C++中,要生成多態對象,需要使用基類指針或引用來指向派生類對象。這樣可以讓我們通過基類接口調用派生類的實現,實現多態行為。
下面是一個簡單的示例:
#include<iostream>
// 基類
class Animal {
public:
virtual void makeSound() const {
std::cout << "The animal makes a sound"<< std::endl;
}
};
// 派生類1
class Dog : public Animal {
public:
void makeSound() const override {
std::cout << "The dog barks"<< std::endl;
}
};
// 派生類2
class Cat : public Animal {
public:
void makeSound() const override {
std::cout << "The cat meows"<< std::endl;
}
};
int main() {
// 使用基類指針創建多態對象
Animal* animal1 = new Dog();
Animal* animal2 = new Cat();
// 通過基類指針調用派生類的方法
animal1->makeSound(); // 輸出 "The dog barks"
animal2->makeSound(); // 輸出 "The cat meows"
// 釋放內存
delete animal1;
delete animal2;
return 0;
}
在這個示例中,我們定義了一個基類Animal
和兩個派生類Dog
和Cat
。基類中有一個虛函數makeSound()
,派生類分別重寫了這個函數。在main()
函數中,我們使用基類指針Animal*
創建了多態對象,并通過基類接口調用了派生類的實現。這就是C++中多態對象的創建和使用方式。