#include <iostream>
using namespace std;

class Base
{
	public:
	virtual void print(){cout<<"Base virtual"<<endl;}
	void nonvirt_print(){cout<<"Base"<<endl;}
};

class Derived : public Base
{
	public:
	virtual void print() override {cout<<"Derived virtual"<<endl;} 
	void nonvirt_print(){cout<<"Derived"<<endl;}
};

void f(Base **base_arr) {
	base_arr[10]->nonvirt_print(); //base
	base_arr[10]->print(); //derived virtual
}

int main() {
	Derived *derived_arr[100];
	for(int i=0;i<100;++i)
		derived_arr[i] = new Derived();
	f(reinterpret_cast<Base*>(derived_arr));
	return 0;
}