UML+OOPC嵌入式C语言开发精讲
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 LW_OOPC与C++的比较和评估

既然使用Visual C++环境,顺便跟C++程序比较一番。现在将刚才的LW_OOPC程序改写为C++程序,程序代码如下:

          // Win32_EX01_02.cpp   这是C++程序
          #include "stdafx.h"
          class IA
          {
          public:
            virtual void init()=0;
            virtual void print_area()=0;
          };
          //-------------------------------------------------
          class Circle: public IA {
          private:
            virtual void init();
            virtual void print_area();
            void print_perimeter();
            double radius;
          };
          void Circle::init()
          { radius = 10.5; }
          void Circle::print_area()
          { printf("AC = %f\n", 3.14 * radius * radius); }
          void Circle::print_perimeter()
          { printf("PC = %f\n", 2 * 3.14 * radius);  }
          //----------------------------------------------------------------------
          class Rectangle: public IA
          {
          private:
            virtual void init();
            virtual void print_area();
            void print_perimeter();
            double length, width;
          }
          void Rectangle::init()
          { length = 10.5;  width = 5.125; }
          void Rectangle::print_area()
          { printf("AR = %f\n", length * width); }
          void Rectangle::print_perimeter()
          { printf("P = %f\n", 2*(length + width));  }
          //--------------------------------------------------------------
          int _tmain(int argc, _TCHAR* argv[])
          {
            IA *pc =  new Circle();
            pc->init();
            pc->print_area();
            IA *pr = new Rectangle();
            pr->init();
            pr->print_area();
      getchar();
      return 0;
    }

此程序产生一个Win32_EX01_02.EXE执行文件,其大小如图1-12所示。

图1-12

此程序大小为30.5KB。C++版程序比LW_OOPC版增加了2KB。

以上的评估说明了面向对象ANSI-C是一项很划算的策略。