It's not a problem if that's what you want. You may want a sub-interface that also cannot be instantiated.
Code:class Bird { public: virtual ~Bird() {} virtual void sing() = 0; virtual void eat() = 0; virtual void walk() = 0; }; class FlyingBird : public Bird { public: virtual void fly() = 0; };