C++纯虚函数作为接口类举例
2016-05-14 10:42
393 查看
#include <iostream> using namespace std; /*抽象类作为接口类举例*/ class Shape { public: virtual double area() = 0;//纯虚函数,纯虚函数首先与子类的对应函数属重载函数,除了形参可不相同(相同为重写),返回值类型等都相同。 protected: private: };//抽象类,不能直接声明对象,仅作接口类使用。 class Trigon :public Shape { public: double area(){return a*b/2;} Trigon(double x, double y){a = x; b = y;} protected: double a, b; private: }; class Square :public Trigon { public: double area(){return a*b;} // Square():Trigon(0,0){cout<<"执行了"<<endl;};//自定义一个构造函数;可配合下一个注释代码测试,验证下一个注释的内容。 Square(double j, double k):Trigon(j,k){}//通过Trigon()为继承而来的保护成员a\b赋值,使得条理更清晰。 protected: private: }; class Circle :public Square { public: // Circle(double r){radius = r;}//未显性指明调用父类的构造函数时,默认调用父类的没有形参的默认构造函数。而父类Square已有自定义的构造函数,系统就不再为其提供任何构造函数了,故报错。 Circle(double r):Square(0,0){radius = r;}//显性指明调用父类的构造函数。 double area(){return radius*radius*3.14;} protected: private: double radius; }; void main() { Shape * p; bool quit = false; while (1) { int choice; cout<<"请选择:(0)退出(1)三角形的面积(2)矩形的面积(3)圆的面积.\n"; cin>>choice; switch (choice) { case 0: quit = true; break; case 1: p = new Trigon(2.58,3.69);//三角形 cout<<p->area()<<endl; break; case 2: p = new Square(23.6,5.666);//矩形 cout<<p->area()<<endl; break; case 3: p = new Circle(6.866); cout<<p->area()<<endl; break; default: cout<<"请输入0到3的数字:"<<endl; break; } if (choice>0 && choice<=3) { delete p;//当输入有效时释放堆中内存空。间 } if (quit) { break; } } }
相关文章推荐
- C语言实现二叉树的递归遍历与非递归遍历
- 最小二乘法及C++实现
- C++多态
- c++ 内存申请释放,构造函数,析构函数,执行顺序
- C/C++ 堆与栈的区别
- HDU 2602-Bone Collector(01背包-一/二维)
- [C++]内存管理器--谈论如何自定义内存分配机制
- 成为C++高手之最终版计算器
- C++中关于set的自定义排序函数的书写
- 【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)
- C++实现迷宫问题
- 汉诺塔问题
- 历届蓝桥杯C/C++决赛试题
- c++ primer(第五版)学习笔记及习题答案代码版(第七章)类
- 指针综合篇(转载)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 方块填数(编程大题)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 DNA比对(编程大题)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 拼音字母(编程大题)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 数据压缩(代码填空)
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 星期几(结果填空)