#include <iostream>
#include <typeinfo>

class A {
int a;
public:
A(int i) : a(i) {}
virtual void print() const {
std::cout << a << std::endl;
std::cout << typeid(*this).name() << std::endl;
}
};

class B : public A {
int a;
public:
B(int i) : a(i), A(0) {}
void print() const {
std::cout << a << std::endl;
std::cout << typeid(*this).name() << std::endl;
}
};

int main()
{
A* a = new B(100);

a->print();
}