>>403
class Ikimono {
virtual int legs() =0;
};

class Tako : public Ikimono {
  int legs() { return 8; }
};

class Neko : public Ikimono {
  int legs() { return 4; }
};

「うまい設計」かどうかは別として後者は満たしてると思うけど