#include <iostream>

using namespace std;


class super {
	protected:
		int x;
	public:
		super() {cout << "super constructed\n\n";}
		virtual ~super() {cout << "super destructed\n\n";}
		virtual int getX() { cout << "getX() from super\n";
					 return x;}
		//virtual int getY() = 0;

};

class sub : public super{
	private:
		int y;
	public:
		sub() { cout << "constructed sub\n\n";}
		~sub() { cout << "destructed sub\n\n";}
		int getX() {
			cout << "called getX() from sub\n\n";
			return x;}
		int getY() {
			cout << "called getY() from sub\n\n";
			return y;
		}
		
};

int main() {
	/*super* x = new super[10];
	delete [] x;*/
	
	super* x[10];
	x[0] = new sub();
	x[0]->getY();
	
	//delete x[0];
	
	
	return 0;
	
}





