[编程思考练习10]C++子类已经重写了父类的函数, 那么如果我有时候就想调父类的函数呢?

虚函数的机制解决了父类的指针如何调子类的函数的问题,因为这个时候子类的函数地址已经替换掉了父类同名函数的地址了。

那么如果有时候我子类就想调用重写前父类函数呢?前面已经做了替换了,好像没法回到过去了。

这个时候就需要用限定符的方式调用。父类::函数方法。这样系统就不会采取虚函数调用了,而是调用对应类下的特定那个函数。比如下文。

base_class *p = new dev_class;
p->v_func1(); // 虚函数机制下调用子类的函数:virtual call - calls `dev_class::v_func1`
p->base_class::v_func1(); //非虚函数机制,调用父类函数 non-virtual call - calls `base_class::v_func1`

参考的stackoverflow的答案,请见

http://stackoverflow.com/questions/11426970/why-can-a-derived-class-virtual-function-call-a-base-class-virtual-function-how

虚函数机制理解,请见:

http://www.cnblogs.com/chinazhangjie/archive/2012/07/11/2586535.html



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值