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

📄 implement.cpp

📁 24学时攻克C++光盘源代码 深入浅出 方便实用
💻 CPP
字号:
 // Listing 18.6. Implementing pure virtual functions
 #include <iostream> 
 class Shape
 {
 public:
     Shape(){}
     virtual ~Shape(){}
     virtual long GetArea() = 0;
      virtual long GetPerim()= 0;
     virtual void Draw() = 0;
 private:
 };

 void Shape::Draw()
 {
     std::cout << "Abstract drawing mechanism!\n";
 }

 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";
     Shape::Draw();
 }

 class Rectangle : public Shape
 {
 public:
     Rectangle(int len, int width):
         itsLength(len), itsWidth(width){}
     virtual ~Rectangle(){}
     long GetArea() { return itsLength * itsWidth; }
     long GetPerim() {return 2*itsLength + 2*itsWidth; }
     virtual int GetLength() { return itsLength; }
     virtual int GetWidth() { return itsWidth; }
     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";
     }
     Shape::Draw();
 }

 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 + -