C学习笔记2c与c++实现程序的比较.docVIP

  • 1
  • 0
  • 约4.22千字
  • 约 8页
  • 2017-07-02 发布于湖北
  • 举报
C学习笔记2c与c实现程序的比较概要1

CC++学习笔记2 我们研究一下继承和虚函数。 比如我们需要求正方形、长方形的周长、面积: 选择1计算长方形 选择2计算正方形 选择3退出 其他无效 我们做一个继承实现,父类矩形,子类有正方形、长方形继承矩形 C++的继承语法如下: 矩形 class Rectangle 正方形 class Square: public Rectangle 长方形 class Oblong: public Rectangle 对正方形、长方形求面积、周长。面积公式相同,在矩形父类完成,函数area();周长公式不同,在各个子类种实现。这里有一个虚函数side()。 /** * 求边长 */ virtual int side()=0; 让函数side()=0;是在此定义,由子类实现。类似于Java的抽象父类,指定需要子类实现的方法。 矩形类: /** * 矩形 */ class Rectangle { protected: int a; // a边 int b; // b边 public: /** * 求面积 */ int area() { return a * b; } /** * 求边长 */ virtual int side()=0; }; 设置了a、b两边且为protected供子类直接使用,给出了求面积的函数实现area(),同时定义了求边长的函数side(),要求函数side()由子类实现。 正方形类: /** * 正方形 */ class Square: public Rectangle { public: /** * 设置边 */ void setA(int a) { this-a = a; this-b = a; } /** * 求边长 */ virtual int side() { return 4 * a; } }; 实现了求边长函数side(),同时加入设置边函数setA(int a)。 长方形类: /** * 长方形 */ class Oblong: public Rectangle { public: /** * 设置a边 */ void setA(int a) { this-a = a; } /** * 设置b边 */ void setB(int b) { this-b = b; } /** * 求边长 */ virtual int side() { return 2 * a * b; } }; 实现了求边长函数side(),同时加入设置边函数setA(int a)和setB(int b)。 根据输入做相应计算: /** * 计算 */ inline void calculate() { int chioce; // 选项 int a; // a边 int b; // b边 Oblong o; // 长方形 Square s; // 正方形 cout endl; cout 选择矩形类型: endl; cout 1-长方形 endl; cout 2-正方形 endl; cout 3-退出 endl; cin chioce; switch (chioce) { case 1: cout 输入a边:; cin a; cout 输入b边:; cin b; o.setA(a); o.setB(b); cout 面积为: o.area() endl; cout 周长为: o.side() endl; calculate(); break; case 2: cout 输入a边:; cin a; s.setA(a); cout 面

文档评论(0)

1亿VIP精品文档

相关文档