本文共 632 字,大约阅读时间需要 2 分钟。
这个是C++中虚函数以及多态性。 我们知道,如果派生类中重定义了基类中的虚函数,即使用基类的类型指针调用该函数,那么实际上连编的是派生类的函数。比如, class A { virtual void out() { printf("A");} } class B : public A { virtual void out() { printf("B");} } void main() { A* a = new B; a->out(); <== 调用的是B的out,而不是a的out,输出的实际上是 B。 delete a; } 这种派生类可以改变基类指针特性的行为,就被称为多态性。 然而,当派生类具有了新的特征,有些时候,我们仍然希望保留基类的特征,也就是说,我们希望能够调用基类定义的out函数,所以就出现了A::out()这样的语法,以便允许从派生类中直接调用基类实现的out虚函数。比如 class B : public A { virtual void out() { printf("B"); <== 输出B A::out(); <== 输出A,不是静态函数调用,而是基类虚函数调用。 } } void main() { A* a = new B; a->out(); <== 调用的是B的out,输出的实际上是 BA a->A::out(); <== 还可以这样调用,现在a类型指针可以直接调用自身实现的out,输出的是 A delete a; }
转载地址:http://bcmws.baihongyu.com/