#include <iostream>
#include <typeinfo>
using namespace std;
class A
{
public:
virtual void fV() { }
};
class B : public A
{
public:
void mB() { }
};
class C : public A
{
public:
void mC() { }
};
int main() {
A *array[4] = { new A, new C, new C, new B }; // first changed to raw A
cout << "i A B C\n--------"<<endl;
for(int i = 0; i < 4; ++i) {
cout << i + 1 << ". " ;
(typeid(*array[i]) == typeid(A)) ? cout << 1 << ' ': cout << 0 << ' ';
(typeid(*array[i]) == typeid(B)) ? cout << 1 << ' ': cout << 0 << ' ';
(typeid(*array[i]) == typeid(C)) ? cout << 1 << ' ': cout << 0 << ' ';
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBBCnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIGZWKCkgeyB9Cn07CmNsYXNzIEIgOiBwdWJsaWMgQQp7CnB1YmxpYzoKICAgIHZvaWQgbUIoKSB7IH0KfTsKY2xhc3MgQyA6IHB1YmxpYyBBCnsKcHVibGljOgogICAgdm9pZCBtQygpIHsgfQp9OwoKaW50IG1haW4oKSB7CglBICphcnJheVs0XSA9IHsgbmV3IEEsIG5ldyBDLCBuZXcgQywgbmV3IEIgfTsgLy8gZmlyc3QgY2hhbmdlZCB0byByYXcgQQoJY291dCA8PCAiaSAgQSBCIENcbi0tLS0tLS0tIjw8ZW5kbDsgCglmb3IoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CiAgICAJY291dCA8PCBpICsgMSA8PCAiLiAiIDsKICAgIAkodHlwZWlkKCphcnJheVtpXSkgPT0gdHlwZWlkKEEpKSA/IGNvdXQgPDwgMSA8PCAnICc6IGNvdXQgPDwgMCA8PCAnICc7CiAgICAJKHR5cGVpZCgqYXJyYXlbaV0pID09IHR5cGVpZChCKSkgPyBjb3V0IDw8IDEgPDwgJyAnOiBjb3V0IDw8IDAgPDwgJyAnOwogICAgCSh0eXBlaWQoKmFycmF5W2ldKSA9PSB0eXBlaWQoQykpID8gY291dCA8PCAxIDw8ICcgJzogY291dCA8PCAwIDw8ICcgJzsKICAgIAljb3V0IDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==