TITLE: An amusing instantiation of an abstract class PROBLEM: a260bail@cdf.toronto.edu (Bailin Jeremy) Just wondering if it's possible to instantiate a class that has a pure virtual method if you never actually call the method. RESPONSE: grumpy@cbnewse.cb.att.com (Paul J Lucas) Just wondering why you didn't read a C++ book which states that what you ask is impossible. That's part of the *point* of an abstract class. RESPONSE: rmartin@rcmcon.com (Robert Martin), 23 Feb 93 You are of course correct as far as mainstream C++ programming is concerned. However perhaps the original poster wanted to know if there was a "trick" that would allow an instance of an abstract class to somehow escape into the system. And, of course, there is. class Base { public: Base(); virtual void f() = 0; }; class Derived : public Base { public: virtual void f() {} }; void G(Base& b) { .... } Base::Base() {G(*this);} main() { Derived d; } When d is created the Base::Base constructor will call G with a reference to an object which has been constructed as a Base, but not yet constructed as a Derived. Thus, it is an instance of an abstract class. Of course, this is very dangerous and I am not recommending it as a practice.