#include <iostream>
using namespace std;

class A {
 public:
   A() {
   	 log("Constructor A");
   }
   ~A() {
   	 log("Destructor A");
   }
   virtual void log(const char* message) {
   	std::cout << "Log from A! (" << message << ")\n";
   }
   virtual void do_something() {
   	 log("Do something");
   }
};

class B : public A{
 public:
   B() {
   	 log("Constructor B");
   }
   ~B() {
   	 log("Destructor B");
   }
   virtual void log(const char* message) {
   	std::cout << "Log from B! (" << message << ")\n";
   }
};

int main() {
	B b;
	b.do_something();
}