C++的虚函数学习
通过基类的指针调用子类的虚函数时,执行的是子类的虚函数。基类派生多个子类后,基类指针可以调用任意子类的虚函数,调用的虚函数是根据基类指针所指向的子类而定。
#include <stdio.h>
class A
{
public:
A(){};
~A(){};
virtual void print() { printf("This is A!\n"); }
};
class B : public A
{
public:
B(){};
~B(){};
virtual void print() { printf("This is B!\n"); }
};
class C : public A
{
public:
C(){};
~C(){};
virtual void print() { printf("This is C!\n"); }
};
int main()
{
A objA;
B objB;
C objC;
objA.print();
objB.print();
objC.print();
A *prtA = NULL;
//下面通过基类指针prtA调用所有虚函数
prtA = &objA;
prtA->print();
prtA = &objB;
prtA->print();
prtA = &objC;
prtA->print();
return 0;
}
执行结果如下:
W:\virtual>.\"test_virtual.exe"
This is A!
This is B!
This is C!
This is A!
This is B!
This is C!
虚函数实现机制详解请参加博客https://blog.csdn.net/lizhentao0707/article/details/80192150