[编程思考练习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



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