①基类指针和虚函数实现多态性
②static_cast和dynamic_cast实现类型转换
③类型转换和虚函数实现多态性的结合
④使用模板实现类型转换
①基类指针和虚函数实现多态性
在C++中,通过基类指针或引用调用派生类的虚函数,可以实现在运行时动态绑定的机制,即多态性。下面是一个简单的例子:
class Shape {
public:
virtual void draw() {
std::cout << "Drawing a shape." << std::endl;
}
};
class Circle : public Shape {
public:
void draw() override {
std::cout << "Drawing a circle." << std::endl;
}
};
int main() {
Shape* shape = new Circle;
shape->draw(); // 输出 "Drawing a circle."
delete shape;
return 0;
}
在上面的例子中,Shape是一个基类,Circle是它的一个派生类。Shape中定义了一个虚函数draw(),而Circle重写了这个函数。在main函数中,我们首先创建了一个Circle对象,并将其赋值给一个Shape类型的指针shape。然后,我们通过shape->draw()调用了Circle中的draw()函数,输出了"Drawing a circle."。这个过程中,通过基类指针调用了派生类的虚函数,实现了多态性。