//: C08:RTTIwithReferences.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt #include #include using namespace std; class B { public: virtual float f() { return 1.0;} virtual ~B() {} }; class D : public B { /* ... */ }; int main() { B* p = new D; B& r = *p; assert(typeid(p) == typeid(B*)); assert(typeid(p) != typeid(D*)); assert(typeid(r) == typeid(D)); assert(typeid(*p) == typeid(D)); assert(typeid(*p) != typeid(B)); assert(typeid(&r) == typeid(B*)); assert(typeid(&r) != typeid(D*)); assert(typeid(r.f()) == typeid(float)); } ///:~