C++构造顺序问题

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

Guess you like

Origin blog.csdn.net/u012787710/article/details/77545186