#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”
