(3.2)狄泰软件学院C++课程学习剖析三

对课程前面40课的详细回顾分析

1、

2、

3、c++中可以使用const常量代替宏常数定义;同样我们可以使用内联函数来替代宏代码片段。内联函数在声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。c++编译器可以将一个函数内联编译,所谓的内联编译就是编译器直接将函数体插入到函数调用的地方,类似于宏定义替换;内联函数省去了普通函数调用时的额外开销(压栈、跳转、返回);但是inline只是一种请求,c++编译器对于函数的内联请求不一定都会满足。

4、c++可以在函数声明时为参数提供一个默认值,当函数调用时没有提供参数时候则使用默认值;尤其需要指出的一点是参数的默认值必须在函数声明中指定;当函数声明和函数定义中都有一个默认值时候则选用函数声明中的默认值,同时可以在函数参数中使用占位参数,占位参数只有函数参数类型声明,而没有参数名。

5、c++中int function()和int function(void)没有区别,都表示无参数接收,返回值为int的函数;但是在C语言中前者表示可以接收任意参数,后者才表示不接受参数。

6、重载函数本质上是一个个相互独立的不同的函数,函数重载是由函数名和参数列表决定的,返回值不能作为判断依据。

时间: 2024-07-30 03:31:30

(3.2)狄泰软件学院C++课程学习剖析三的相关文章

狄泰软件学院C++课程学习笔记汇总

深度剖析C++ 1.类是一种模型,这种模型可以创建出一个对应的实体.有了类不一定有对应的实体,但是一个实体必定属于某一个类. 2.类用于抽象的描述 一类事物所持有的属性和行为:对象是具体的事物,拥有所属类中描述的一切 属性和行为. 3.类一定都源于生活,两个对象实例不可能完全相同. 4.类之间的基本关系:继承和组合. 继承:从已有的父类细分出来的类和原有的类之间具有继承关系(is-a):继承的子类拥有父类的所有属性和方法. 组合:一些类的存在必须依赖于其他类,组合的类在某一个局部上由其他的类 组

数据结构第六课------------狄泰软件学院

图片出自狄泰软件学院工程里面一般采用时间复杂度在 O(n^3) 之前的算法.算法的最好与最坏情况:一般推断算法的最坏情况,当程序在最坏情况都能满足要求是,说明在最好和平均情况都能满足要求. 算法的空间复杂度 (Space Complexity)定义:S(n) = S(f(n))n为算法的问题规模f(n)为空间使用函数,与n有关推导时间复杂度的方法同样适用于空间复杂度如当算法所需要的空间复杂度是常数时,空间复杂度为S(1)S(n+4) = S(n)空间与时间的比较(1)多数情况下,算法的时间复杂度

第十三课、类族的结构进化-------------------狄泰软件学院

一.遵循经典设计原则 DTLib中的所有类位于单一继承树 IvalidOperationEXception是新增的异常类,描述某些成员函数在状态不对的时候被抛出 二.改进的关键点 1.EXception类继承自Object类:堆空间中创建异常对象失败时,返回NULL指针,用的是自己的new版本 更改: 2.新增IvalidOperationEXception异常类:成员函数调用时,如果状态不正确则抛出该异常 增加: //非法操作异常 class IvalidOperationEXception:

第十六课、顺序存储结构的抽象实现----------狄泰软件学院

一.课程目标 1.完成顺序存储结构的抽象实现,既然是抽象实现,自然就是抽象类,不能生成对象 (1).抽象类模板,存储空间的位置和大小由子类完成  (2).这里只实现顺序存储结构的关键操作(增.删.查等) (3).提供数组操作符,方便快速获取元素(要提供const版本的,方便const对象调用) 二.具体实现 这里需注意几点 (1).这里将capacity()函数设置为纯虚函数,说明在这里还不需要实现它,将其留到子类中在实现. (2).数组操作符的返回值一个是引用一个是值,是因为const对象不能

第十四课、线性表的本质和操作-----------------狄泰软件学院

一.线性表(List)的表现形式 1.零个或者多个数据元素组成的集合 2.数据元素在位置上是有序排列的 3.数据元素的个数是有限的 4.数据元素的类型必须相同 二.线性表(List)的抽象定义 1.线性表是具有相同类型的n(>=0)个数据元素的有限序列 {a0,a1,a2,....an-1} ai是表项(数据元素),n是表长度 三.线性表(List)的性质 1.a0为线性表的第一个元素,只有一个后继 2.an-1为线性表的最后一个元素,只有一个前驱 3.除a0和an-1外的其它元素ai,既有前驱

第五十八课、自定义模型类(上)------------------狄泰软件学院

 一.自定义模型类 1.QStandardItemModel是一个通用的模型类 (1).能够以任意的方式组织数据(线程.非线性) (2).数据组织的基本单位为数据项(QStandardItem) (3).每一个数据项能够存储多个具体数据(附加数据角色) (4).每一个数据项能够对数据状态进行控制(可编辑.可选...) 2.Qt中的通用模型类QStandardItemModel (1).QStandardItemModel继承自抽象的模型类QAbstractItemModel (2).QStand

第三课、初识程序的灵魂------------------------狄泰软件学院

一.初识程序的灵魂 1.数据结构静态描述了数据元素之间的关系 2.高效的程序需要在数据结构的基础上设计和选择算法 高效的程序需要: (1).恰当的数据结构 (2).合适的算法 3.算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列 (1).算法是独立存在的一种解决问题的方法和思想 (2).对于算法而言:语言不重要,重要的是思想 4.算法的特性 (1).输入:算法具有0个或者多个输入 (2).输出:算法至少有一个或者多个输出 (3).有穷性:算法在有限的步骤之后会自动结束而不会自动循环

第十一课、异常类的构建-------------狄泰软件学院

一.自定义异常类 1.异常的类型可以是自定义的类类型 2.对于类类型的匹配依旧是之上而下的严格匹配 3.赋值兼容性原则在异常匹配中依然适用 所以要 (1).匹配子类异常的catch放在上部 (2).匹配父类异常的catch放在下部 4.异常类是数据结构所依赖的"基础设施"(现代c++库也必然包含充要的异常类族) 二.一步步打造自己的异常类 1.首先是抽象类EXception的编写,既然是抽象类,必然含有纯虚函数,通常的做法都是将析构函数作为纯虚函数 头文件:接口定义 class Exc

第九课、智能指针示例------狄泰软件学院

一.内存泄漏(臭名昭著的bug) (1).动态申请堆空间,用完后不归还 (2).c++语言中没有垃圾回收机制 (3).指针无法控制所指向的堆空间生命周期(如局部指针生命周期结束了堆空间的生命周期还未结束) 二.智能指针 1.当代c++平台的智能指针 (1).指针生命周期结束时主动释放堆空间 (2).一片堆空间最多只能由一个智能指针标识 (3).杜绝指针运算和指针比较 2.智能指针的设计方案 (1).通过类模板描述指针的行为:能够定义不同类型的指针变量 (2).重载指针特征操作符(->和*):利用