Cómo llamar a una función virtual privada fuera de clase en C ++

Utilice punteros de funciones virtuales fuera de la clase para omitir la limitación de privado, por ejemplo:

#include<iostream>
using namespace std;

class B
{
private:
	virtual void func()
	{
		cout << "func" << endl;
	}

};

int main()
{
	B b;
	long *p1 = (long *)&b;
	long *p2 = (long *)(*p1);
	typedef void(*Func)(void);
	Func func = (Func)p2[0];
	func();

	return 0;
}

El código anterior especula personalmente que no es necesario pasar la llamada de la función virtual en este puntero como la función miembro ordinaria en la clase (esta vista no es necesariamente correcta)

123 artículos originales publicados · 31 elogiados · 90,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/qq_40794602/article/details/103914942
Recomendado
Clasificación