C++抽象类
来源:互联网 发布:mac管理桌面图标 编辑:程序博客网 时间:2024/06/05 21:54
1、凡是包含纯虚函数的类都是抽象类。因为纯虚函数是不能被调用的,包含纯虚函数的类是无法建立对象的。
2、如果在派生类中没有对所有纯虚函数进行定义,则此派生类仍然是抽象类,不能用来定义对象。
3、可以定义指向抽象类的指针。
下面是代码
#include<iostream>using namespace std;#define PI 3.1415926/****************************抽象基类**********************************/class Shape{public : virtual float area(){return 0;};//虚函数--面积 virtual float volume(){return 0;};//虚函数--体积 virtual void shapeName()=0;//纯虚函数 virtual ~Shape(){};//虚析构函数};/*********************************Point************************************/class Point:public Shape{protected: float x,y;public: Point(float x=0,float y=0):x(x),y(y){}//构造函数 virtual ~Point(){ cout<<"Point destory"<<endl;}//虚析构函数 virtual float area(){return 0;}//虚函数--面积 virtual float volume(){return 0;};//虚函数--体积 virtual void shapeName();};void Point::shapeName() { cout<<"This is a Point"<<endl; }/***********************************Circle**********************************/class Circle:public Point{protected: float r;public: Circle(float x=0,float y=0,float r=0):Point(x,y),r(r){}//构造函数 virtual ~Circle(){cout<<"Circle destory"<<endl;}//虚析构函数 virtual float area(){return PI*r*r;}//虚函数--面积 virtual float volume(){return 0;}//虚函数--体积 virtual void shapeName();};void Circle::shapeName() { cout<<"This is a Circle"<<endl; }/***********************************Cylinder**********************************/class Cylinder:public Circle{protected: float h;public: Cylinder(float x=0,float y=0,float r=0,float h=0):Circle(x,y,r),h(h){}//构造函数 virtual ~Cylinder(){cout<<"Cylinder destory"<<endl;}//虚析构函数 virtual float area(){return PI*r*r*2+2*PI*r*h;}//虚函数--面积 virtual float volume(){return PI*r*r*h;}//虚函数--体积 virtual void shapeName();};void Cylinder::shapeName() { cout<<"This is a Cyliner"<<endl; }/*****************************************************************************/int main(){Shape *p=new Point;p->shapeName();delete p;cout<<endl;p=new Circle(1.2,2,3);p->shapeName();cout<<"area : "<<p->area()<<endl;delete p;cout<<endl;p=new Cylinder(1.2,2,3,10);p->shapeName();cout<<"area : "<<p->area()<<endl;cout<<"volume : "<<p->volume()<<endl;delete p;cout<<endl;return 0;}
下面是运行结果
阅读全文
0 0
- 抽象类(C++)
- [c++]抽象类
- c+-----------------------------抽象类
- C#_抽象类和抽象方法
- C#:抽象类的学习
- 数据抽象----类(c++)
- C#----接口与抽象类
- C#---抽象类与接口
- C#:超基础 抽象类
- 【C#】抽象类和接口
- 【C++】接口(抽象类)
- 转:C++ C#抽象类
- C#:抽象
- C#==>抽象类和抽象函数
- C#--抽象类、抽象方法、多态机制
- C#:抽象类PK密封类
- 抽象类和接口(C#)的区别
- c#接口与抽象类的区别
- bzoj3309 DZY Loves Math
- 服务响应对象设计
- 131. Palindrome Partitioning
- 劳工部起诉谷歌薪资信息,谷歌嫌收集证据成本贵
- linux 制作U盘启动,和定制系统
- C++抽象类
- http://dl-ssl.google.com/android上不去解决方案
- 你是不是 可替代的Linux运维工程师?
- Day 11 常用正则表达式
- 谨慎使用输出重定向(>)
- 最新版VMare安装Ubuntu和fedora失败问题
- LeetCode OJ 7 Reverse Integer [easy]
- 关于 equals 和 == 的一些思考
- 训练赛---分球