>>240,243ではKAC氏のコードを待っていると書いたけど、
やっぱり、こちらでもC++のコードを示すことにする
ただし、>>194に対して直接LAC氏がC++のコードを希望したと想定し、
>>194のRubyコードの意味を変えずC++へ移植したものとする
また、そのほうが両方のコードを比較できるから、
KAC氏以外の人達にとっても有益だと判断する
(ただし、>>213,215のKAC氏指摘バグは、最初から対策済みとする)

まず最初は、具象クラス継承のC++版コードを示す

class Rectangle {
public:
  Rectangle(int h, int w): height(h), width(w)
  void set_height(int h) { height = h; }
  void set_width(int w) { width = w; }
  virtual int area(void) { return height * width; }
  virtual int perimeter(void) { return (height + width) * 2; }
private:
  int height, width;
}

class Square: public Rectangle {
public:
  Square(int s): Rectangle:(s, s) {}
  void set_size(int s) { set_height(s); set_width(w); }
}

// 使用例
Rectangle R(3, 5);
Square(7);

(続く)