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