#include "stdafx.h"
#include <iostream>
using namespace std;
class A {
public:
A() {
a = this;
}
virtual void test()
{
cout << "A::test()\n";
}
;
static A * a ;
};
A* A::a = nullptr;
class B : A {
public:
void test() {
cout << "调用了test函数\n";
}
};
int main() {
B b;
A::a->test();
return 0;
}
在类初始化的过程中,父类到子类构造,通过父类的构造函数中的静态成员保存类的指针,从而初始化此指针,指针实际指向值为子类,多态
结果为
“调用了test函数\n”