在 C++ 中,多態(tài)性是通過虛函數(shù)實現(xiàn)的。要實現(xiàn)類型隱藏,可以使用基類指針或引用來指向派生類對象。這里有一個簡單的例子來說明如何實現(xiàn)類型隱藏:
#include <iostream>
// 基類 Shape
class Shape {
public:
// 虛函數(shù) area()
virtual double area() const {
return 0.0;
}
};
// 派生類 Circle,繼承自 Shape
class Circle : public Shape {
public:
Circle(double radius) : radius_(radius) {}
// 重寫基類的虛函數(shù) area()
double area() const override {
return 3.14159 * radius_ * radius_;
}
private:
double radius_;
};
int main() {
// 使用基類指針指向派生類對象
Shape* shape = new Circle(5.0);
// 調(diào)用虛函數(shù) area(),實現(xiàn)多態(tài)性
std::cout << "Area: " << shape->area() << std::endl;
delete shape; // 釋放內(nèi)存
return 0;
}
在這個例子中,我們定義了一個基類 Shape
和一個派生類 Circle
。Circle
類繼承自 Shape
類,并重寫了基類的虛函數(shù) area()
。在 main()
函數(shù)中,我們使用基類指針 shape
指向派生類對象 Circle
。當(dāng)我們調(diào)用 shape->area()
時,C++ 會根據(jù)對象的實際類型(這里是 Circle
)來調(diào)用相應(yīng)的 area()
函數(shù),實現(xiàn)了多態(tài)性。同時,由于基類指針指向派生類對象,實現(xiàn)了類型隱藏。