// polymorphism.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
class A
{
public:
virtual void f() const
{
}
};
class B : public A
{
public:
void f() const override
{
}
};
void F(A &a)
{
a.f();
}
int _tmain(int argc, _TCHAR* argv[])
{
A a;
B b;
// 根据指针或引用绑定的对象类型的不同,决定执行的函数版本
F(a);// 调用A的f
F(b);// 调用B的f
// 注意,基类或派生类的指针或引用,都不影响实际调用所依据的对象类型。即
// 函数版本取决于实际的对象类型,其指针或引用可以是基类的也可以是派生类的
((A *) &a)->f();// 调用A的f
((A *) &b)->f();// 调用B的f
((B *) &a)->f();// 调用A的f
((B *) &b)->f();// 调用B的f
return 0;
}
多态的运用
最新推荐文章于 2024-03-18 21:39:26 发布