版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+编程,2,课程目标,学习c+基本知识和技能 要求学员能正确的理解和运用c+基本知识和技能,3,课程分为如下几块,C+单个类的设计 C+类的继承 容器和算法 IO流 C+的异常处理 Qt Qt扫雷项目,4,第一部分 c+类的设计,预习检测 什么是引用? 引用必需要初始化吗? 定义类的友元函数的关键字是什么? C+的显式转换有哪几种定义? 复制控制包含那几个函数?,5,第一部分 c+概述,C+是由AT /开辟一个存放数组的存储空间,返回一个指向该存储空间的地址. 2)int *a = new int(5); / 作用同上,但是同时将整数赋值为5 2.开辟数组空间 一维: int *a = ne
2、w int100;/开辟一个大小为100的整型数组空间 二维: int(*a)6=new int56; Delete的作用: 调用对象的析构函数, 在释放对象 1. int *a = new int; delete a; /释放单个int的空间 2.int *a = new int5; delete a; /释放int数组空间,9,第一部分 c+类的设计,第四节 类型转换 隐式类型的转换 int a = 1; double b = 0.1 double c = a+b; 指针转换: int a3; int * b = a; 转换为bool 类型 算术值和指针值都可以转换为 bool 类型。 I
3、nt * a = 0; If(a) cout “a is true”; else cout “a is false”;,10,第一部分 c+类的设计,C+的显式转换 static_cast 程序员显式的强制类型转换 int a = 10; double b = static_cast(a); double c = (double)a; reinterpret_cast:为操作数的位模式提供较低层次的重新解释 int b = 1; int a = (int) / C-language-style cast notation,11,第一部分 c+类的设计,第五节 友元及static 友元机制: 允
4、许一个类将对其非公有成员的访问权授予指定的函数或类 优点: 在实现类之间数据共享时,减少系统开销,提高效率; 缺点:友元函数破环了封装机制,尽量不使用友元函数. 因为友元函数是类外的函数,所以它的声明可以放在类的私有段或公有段且没有区别。可以直接调用友元函数,不需要通过对象或指针. 成员函数有this指针,而友元函数没有this指针。 友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友 static函数和static数据成员 非static成员存在于类的对象中, static数据成员是独立于类的对象的, 它是于类相关联的. 通过作用域操作符:直接调用static成员. static数据成员
5、必须在类定义体外部定义一次. 静态成员函数访问类成员数据和类static数据成员的区别。,12,第一部分 c+类的设计,第六节 复制控制 复制控制: 复制构造函数, 析构函数, 赋值操作符. 析构函数在撤销类对象时自动调用 class Person public: Person(const string ,13,第一部分 c+类的设计,第七节 操作符重载 一般将算术和关系操作符定义非成员函数,而将赋值操作符定义为成员操作符。定义为非成员函数时,通常必须将它们设置为所操作类的友元 operator+(); operator+=(); operator=(); operator!=(); 重载赋值
6、运算符时应返回一个对象。因为赋值运算符的左边是一个对象,所以重载赋值运算符应返回一个类的对象,为了避免不必要的开销,最好是返回一个类的对象的引用。 重载赋值运算符时必须是类的成员函数。 复数类演示代码 输入和输出操作符 ostream virtual void letOff() cout bio lef off! endl; virtual void move() cout bio move! endl; ; class Animal: public Biology public: void eat() cout animal eat! endl; void letOff() cout ani
7、mal lef off! endl; ;,19,第二部分 c+类的继承,int main() Animal tiger; tiger.eat(); /函数的覆盖 tiger.letOff(); /函数的重定义 tiger.move(); /函数的继承 Biology * bio = 触发动态绑定的两个条件: 第一,只有指定为虚函数的成员函数才能进行动态绑定 第二,必须通过基类类型的引用或指针进行函数调用。 多态有两种实现方式是: 一是同一个类中函数的重载; 二是子类改写父类中方法的内部实现。,20,第二部分 c+类的继承,派生类到基类的转换 如果有一个派生类型的对象,则可以使用它的地址对基类类
8、型的指针进行赋值或初始化。 基类到派生类的转换: 从基类到派生类的自动转换是不存在的。 class A ; class B: public A ; int main() A * pa = new B; /B * b = pa;/报错 B * b = static_cast(pa); return 0; ,21,第二部分 c+类的继承,第二节派生类构造函数 派生类的构造函数受继承关系的影响,每个派生类构造函数除了初始化自己的数据成员之外,还要初始化基类。子类的构造函数定义中用以下格式调用父类的构造函数: 子类名:构造函数名(参数表):父类名(参数表) class Base public: Bas
9、e(int i =0 ): m_i(i) protected: int m_i; ; class Derive : public Base public: Derive(int i =0, const string ,22,第二部分 c+类的继承,复制控制和继承 class Person public: Person(const string ,23,第二部分 c+类的继承,class Student: public Person public: Student(const string ,24,第二部分 c+类的继承,第三节 派生类的撤销 对象的撤销顺序与构造顺序相反:首先运行派生析构函数,然后按继承层次依次向上调用各基类析构函数。 基类的析构函数必须定义为虚函数,25,第二部分 c+类的继承,本章总结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西省延安市网格员招聘考试参考试题及答案解析
- 2026年思茅地区翠云区网格员招聘考试参考试题及答案解析
- 2026年湖北省黄冈市网格员招聘考试备考试题及答案解析
- 2026年武汉市武昌区网格员招聘考试参考试题及答案解析
- 2026年新疆维吾尔自治区网格员招聘考试参考试题及答案解析
- 2025年莱芜市莱城区街道办人员招聘考试试题及答案解析
- 2026年柳州市柳南区网格员招聘笔试参考试题及答案解析
- 2026年涪陵区黔江区网格员招聘考试模拟试题及答案解析
- 2026年达州市通川区街道办人员招聘笔试备考题库及答案解析
- 2026年行政办事员题库检测试卷(有一套)附答案详解
- 2026AHA-ASA急性缺血性卒中早期管理指南解读课件
- 放射科床旁照相工作制度
- 2026新疆文旅投集团所属产业公司选聘50人笔试模拟试题及答案解析
- 工程伦理道德案例分析
- 2026年网络安全攻防电子数据取证关键技术题库
- 《中药提取物质量控制研究技术指导原则(征求意见稿)》
- 2026年人工智能在桥梁结构优化中的应用
- 能量量子化课件-高二上学期物理人教版
- 2026青海交通控股集团校招面试题及答案
- 2025年特色美食街区开发可行性研究报告
- 7793-2025中小学校教室采光和照明卫生标准
评论
0/150
提交评论