C++的静态绑定与动态绑定

C++语言默认采用的是静态绑定。

 

上述打印的结果:

AAAAAAAAAAAA

AAAAAAAAAAAA

因为动态绑定的执行效率更低,c++默认采用静态绑定。如果需要动态绑定,则需要特别声明,采用virtual标识。

1.        静态绑定:根据编译时申明的变量类型,来决定调用的是哪个类型的函数;

2.        动态绑定:根据运行时实际赋给变量的类型,来决定调用的是父类或子类的函数。

 

如果将Person类的func函数加上virtual修饰,让其成为虚函数。

 

上述打印的结果:

AAAAAAAAAAAA

BBBBBBBBBBBB

 

只有通过指针或引用来访问对象的虚函数时,才能够进行动态绑定。

故上述的

Person person = child;

person.func();

调用的函数还是Person类的func,因为没有动态绑定。

 

 

--------------------------------------------

再举一例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值