当前位置: 首页 > news >正文

一个人做网站 知乎哈尔滨网站建设价格

一个人做网站 知乎,哈尔滨网站建设价格,重庆拓达建设集团网站,谷歌浏览器直接打开C中抽象类 1.抽象类概念1.1、抽象类如何使用1.2、抽象类规定 2.抽象类代码示例2.1、抽象类2.2、子类12.3、子类22.4、程序入口 1.抽象类概念 C是一门面向对象的编程语言#xff0c;而所有的对象都是通过类来描述的#xff0c;如果一个类没有足够的信息来描述一个具体的对象中抽象类 1.抽象类概念1.1、抽象类如何使用1.2、抽象类规定 2.抽象类代码示例2.1、抽象类2.2、子类12.3、子类22.4、程序入口 1.抽象类概念 C是一门面向对象的编程语言而所有的对象都是通过类来描述的如果一个类没有足够的信息来描述一个具体的对象这样的类就是抽象类。换句话说类是具有相同或相似结构、操作和约束规格的对象组成的结合。而对象是某一类的具体实例化。每一个类都是具有某些共同特征的对象的抽象。 例如我们可以将所有的图形归为图形类图形类即为一个抽象类(父类)但是对于具体的图形是三角形、四边形或者其他图形无法准确描述。但是三角形、四边形等又都是继承于图形类的子类。具体是哪一类四边形又可分为正方形、平行四边形等。 实际开发中并不需要将父类初始化为对象需要的是子类对象图形类(父类)不能抽象出任何一种图形但子类却可以。 简单说父类只是给出了一个模糊的概念定义了方法的名称以纯虚函数方式展示却并没有给出方法的实现过程而具体的实现过程在继承于父类的子类中又大不相同。 1.1、抽象类如何使用 在使用抽象类之前需要了解为什么要用它。如果是自己独自开发代码得明白什么情况下、什么地方需要加抽象类如果是在其他人开发的基础上进行二次开发那也得知道别人为什么需要在此处加抽象类不加行不行。 例如在工业控制中有A、B两种运动控制轴卡可以选择两种轴卡可以实现相同的功能如果机台装的是A轴卡那就启动A轴卡如果装的是B轴卡那就启用B轴卡。但是我的程序只有一套即需要兼容效果如果后面还需要采购C、D轴卡呢这个时候就可以引用抽象类的概念抽象类中定义基础运动控制方式名称但是不实现实现方式在不同轴卡中。在启用前只需要判断是哪种轴卡后续的代码实现运动控制过程调用的方法名称一样。避免了代码中大量修改。 1.2、抽象类规定 1抽象类只能用作其他类的基类不能建立抽象类对象。 2抽象类不能用作参数类型、函数返回类型或显式转换的类型。 3可以定义指向抽象类的指针和引用此指针可以指向它的派生类进而实现多态性。这一条很有用用抽象类方法名称去兼容子类。 2.抽象类代码示例 搞清除抽象类概念后以下通过一个简单例子加深对抽象类的理解例子代码来源C的抽象类详解 2.1、抽象类 定义抽象类IShape抽象类IShape作为基类只有头文件没有实现文件 #ifndef SHAPE_H #define SHAPE_H#include stringusing std::string;//interfaceclass IShape {public:virtual float getArea() 0; //纯虚函数获得面积virtual string getName() 0; //纯虚函数返回图形的名称 };#endif2.2、子类1 基于此抽象类的一个子类Circle 头文件 #ifndef CIRCLE_H #define CIRCLE_H#includeIShape.hclass CCircle : public IShape //公有继承自IShape类{public:CCircle(float radius); //构造函数public:virtual float getArea(); //实现声明实现两个基类的函数声明的时候需要加virtual关键字实现的时候就不需要加virtual关键字了。virtual string getName();private:float m_fRadius; //派生类可以拥有自己的成员};#endifcpp实现文件 #includeCircle.hCCircle::CCircle(float radius):m_fRadius(radius) //使用构造函数的初始化列表初始化 {}string CCircle::getName() {return CCircle; }float CCircle::getArea() //实现两个基类的函数{return 3.14* m_fRadius* m_fRadius; }2.3、子类2 基于抽象类的另一个子类CRect 头文件 #ifndef RECT_H #define RECT_H#includeIShape.hclass CRect : public IShape {public:CRect(float nWidth, float nHeight);public:virtual float getArea();virtual string getName();private:float m_fWidth; //矩形类具有自己的两个属性宽和高float m_fHeight; };#endifcpp实现文件 #includeRect.hCRect::CRect(float fWidth, float fHeight):m_fWidth(fWidth), m_fHeight(fHeight) {}float CRect::getArea() {return m_fWidth * m_fHeight; }string CRect::getName() {return CRect; }2.4、程序入口 #includeRect.h #includeCircle.husing namespace std;int main() {IShape* pShape NULL; //定义了一个抽象类的指针注意抽象类不能定义对象但是可以定义指针pShape new CCircle(20.2); //基类指针指向派生类的对象cout pShape-getName() pShape-getArea() endl;delete pShape; //释放了CCirle对象所占的内存但是指针是没有消失的它现在就是一个野指针我们在使用之前必须对它赋值pShape new CRect(20, 10); //基类指针指向派生类的对象cout pShape-getName() pShape-getArea() endl;return 0; }上述例子中定义了一个图形基类IShape只有头文件基类中定义两种方法计算面积和返回图形名称但并没有给出实现方式也不知道是什么图形无法实现。圆形类CCircle和矩形类CRect继承于基类IShape分别实现了面积的计算与返回图形名称两种方法。 在程序入口以指针pShape 的方式指代基类IShape而基类指针再指向子类。
http://www.dnsts.com.cn/news/9158.html

相关文章:

  • 网站为什么没有排名了网站备案号在哪儿查询
  • 高端购物网站建设济南网站推广服务
  • 手机门户网站模板中国煤炭建设协会网站qc
  • 淘宝数据网站开发室内设计效果图价格
  • 怎样做支付网站网站开发怎么接单
  • 建设网站找哪家网店设计公司
  • 商城外贸网站设计wordpress显示产品类别
  • 大学生旅游网站策划书做汽车的网站编辑
  • 顶呱呱网站做的怎么样绿色食品网站模板.htm
  • 网站建设系统规划方案网站运营与管理
  • wordpress网站备份还原网站制作 天津
  • 做网站如何导入信用卡付款wordpress中级课程凌风主讲
  • 国外创意摄影网站wordpress博客分类
  • 国外包装设计欣赏网站博采网络股吧
  • 全企网建站怎么样深圳域名注册公司
  • 沙发网站建设贵州网站中企动力建设
  • 个人内网网站建设阿里ace wordpress
  • 河北省建设执业资格中心网站衡水网站建费用
  • 网站备案号显示红色顺德品牌网站建设
  • 济南市莱芜区网站汕头微网站
  • wordpress建站ftp手机数据线东莞网站建设
  • 站长工具无内鬼放心开车禁止收费小笨鸟跨境电商平台
  • 催收网站开发宁波免费建网站
  • 发布个人免费网站的一般流程图中国建设银行浙江分行网站
  • 英铭网站建设wordpress添加视频解析
  • 中国建设银行总行官方网站黄陂区建设局网站
  • 怎么建设电子邮箱网站无法连接到wordpress
  • 电影网站做流量吗响应式网站预览
  • 做rap的网站高端html5网站建设
  • 门户和网站的区别宝安印刷网站建设