#include <iostream>
#include <string>
using namespace std;
/*---------------------------------
13-4继承是否可以实现多态性
1) 静态联编:被调函数和调用函数的关系,以及它们内存地址在编译时
都已经确立好,运行时不再发生变化。只需传递参数,执行确定好的函数。
2) 动态联编:运行时,需要对各个对象的函数进行追踪
---------------------------------*/
class A
{
public:
virtual void print() //使用了virtual,将使用动态联编
{cout<<"a"<<endl;}
};
class B:public A
{
public:
void print()
{cout<<"b"<<endl;}
};
class C:public A
{
public:
void print()
{cout<<"c"<<endl;}
};
int main()
{
A a;
B b;
C c;
A *P =&a;
A *P1=&b; //派生类对象的地址可以赋给指向基类对象的指针
A *P2=&c; //派生类对象的地址可以赋给指向基类对象的指针
P->print();
P1->print(); //调用父类的成员函数
P2->print(); //调用父类的成员函数
cout<<"---------------"<<endl;
a.print();
b.print(); //调用派生类自个儿的成员函数
c.print();
return 0;
}
运行结果:
a
b
c
---------------
a
b
c
Press any key to continue
C++ 虚函数 4--继承实现多态性
最新推荐文章于 2022-05-30 16:35:11 发布