⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shapeclass.cpp

📁 24学时攻克C++光盘源代码 深入浅出 方便实用
💻 CPP
字号:
 //Listing 18.3. Shape classes.

 #include <iostream>

 

 class Shape

 {

 public:

     Shape(){}

     virtual ~Shape(){}

     virtual long GetArea() { return -1; } // error

     virtual long GetPerim() { return -1; }

     virtual void Draw() {}

 };

 

 class Circle : public Shape

 {

 public:

     Circle(int radius):itsRadius(radius){}

     ~Circle(){}

     long GetArea() { return 3 * itsRadius * itsRadius; }

     long GetPerim() { return 9 * itsRadius; }

     void Draw();

 private:

     int itsRadius;

     int itsCircumference;

 };

 

 void Circle::Draw()

 {

     std::cout << "Circle drawing routine here!\n";

 }

 

 

 class Rectangle : public Shape

 {

 public:

     Rectangle(int len, int width):

         itsLength(len), itsWidth(width){}

     virtual ~Rectangle(){}

     virtual long GetArea() { return itsLength * itsWidth; }

     virtual long GetPerim() {return 2*itsLength + 2*itsWidth; }

     virtual int GetLength() { return itsLength; }

     virtual int GetWidth() { return itsWidth; }

     virtual void Draw();

 private:

     int itsWidth;

     int itsLength;

 };

 

 void Rectangle::Draw()

 {

     for (int i = 0; i<itsLength; i++)

     {

         for (int j = 0; j<itsWidth; j++)

             std::cout << "x ";

 

         std::cout << "\n";

     }

 }

 

 class Square : public Rectangle

 {

 public:

     Square(int len);

     Square(int len, int width);

     ~Square(){}

     long GetPerim() {return 4 * GetLength();}

 };

 

 Square::Square(int len):

     Rectangle(len,len)

 {}

 

 Square::Square(int len, int width):

     Rectangle(len,width)

 {

     if (GetLength() != GetWidth())

         std::cout << "Error, not a square... a Rectangle??\n";

 }

 

 int main()

 {

     int choice;

     bool fQuit = false;

     Shape * sp;

 

     while (1)

     {

         std::cout << "(1)Circle (2)Rectangle (3)Square (0)Quit: ";

         std::cin >> choice;

 

         switch (choice)

         {

         case 1: 

             sp = new Circle(5);

             break;

         case 2: 

              sp = new Rectangle(4,6);

             break;

         case 3: 

             sp = new Square(5);

             break;

         default:

             fQuit = true;

             break;

         }

         if (fQuit)

             break;

 

         sp->Draw();

         std::cout << "\n";

     }

     return 0;

 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -