#include <iostream>
using namespace std;

class clsA {
public:
	clsA() { cout << "clsA\n"; }
	~clsA() { cout << "~clsA\n"; }
};

class dlvA : public clsA {
public:
	dlvA() { cout << "dlvA\n"; }
	~dlvA() { cout << "~dlvA\n"; }
};

class clsB {
public:
	clsB() { cout << "clsB\n"; }
	virtual ~clsB() { cout << "~clsB\n"; }
};

class dlvB : public clsB {
public:
	dlvB() { cout << "dlvB\n"; }
	~dlvB() { cout << "~dlvB\n"; }
};


int main() {
	{
		cout << "(1)\n";
		dlvA objA;
	}
	{
		cout << "(2)\n";
		dlvB objB;
	}
	
	cout << "(3)\n";
	clsA* ptrA = new dlvA;
	delete ptrA;
	
	cout << "(4)\n";
	clsB* ptrB = new dlvB;
	delete ptrB;
	
	return 0;
}