C++中虚函数有哪些作用及用法 (2)

动态联编是指在程序运行时进行的联编,也称晚期联编。 动态联编要求在运行时解决程序中的函数调用与执行该函数代码间的关系。
使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。
继承是动态联编的基础,虚函数是动态联编的关键。

虚函数是一种非静态的成员函数,定义格式如下:

virtual <类型说明符> <函数名>(<参数表>)
{
//<函数体>
}

其中,virtual 是关键字。
如果某个类中的一个成员函数被说明为虚函数,该成员函数可能在派生类中存在着不同的实现版本。
由于存在虚函数,编译器将进行动态联编,使调用虚函数的对象在运行时确定,以实现动态联编的多态性。
例如:使用虚函数将上例改为动态联编的情况,将得到不同的结果

#include <iostream.h>
class Base
{
protected:
int x;
public:
Base(int a)
{ x=a; }
virtual void print()
{ cout<<“Base ”<<x<<“
”; }
};
class First_d: public Base
{
public:
First_d(int a): Base(a) { }
virtual void print()
{ cout<<“First derivation
”<<x<<“
”; }
};

class Second_d: public Base
{
public:
Second_d(int a):Base(a) { }
virtual void print()
{ cout<<“Second derivation
”<<x<<“
”; }
};
void main()
{
Base *p;
Base obj1(1);
First_d obj2(2);
Second_d obj3(3);
p=&obj1;
p->print();
p=&obj2;
p->print();
p=&obj3;
p->print();
obj2.print();
obj3.print();
}
运行结果:

Base 1
First derivation 2
Second derivation 3
First derivation 2
Second derivation 3

程序中,p->print();出现了三次,由于p 指向的对象不同,每次执行了print() 的不同实现版本。实现了“单界面、多实现版本”的思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值