I think I've read (I can't find where I've read it) that Bar is "better" than Foo, but I don't know why and it's bugging me ;-)
Could someone explain? Angus class Foo { public: virtual ~Foo() {} virtual void foo() = 0; }; class Bar { public: virtual ~Bar() {} void bar() { bar_private(); } private: virtual void bar_private() = 0; }