写在前面:

  我记得也不全,如果有记录的更全的同学可以留言,我会添加哒 :)


常量

内敛函数
为什么需要内敛函数
内敛函数适用于什么场合 内敛函数本身,最大优点是,避免了真正函数调用的开销
因为普通函数调用会有开销,比如开辟一个栈,结束了还要释放局部变量
如果函数体只有寥寥几行,是不值得使用函数
在函数体代码比较短小的时候,使用频繁的,应该使用内敛函数
最大优点:没有函数调用开销,又解决了带有参数宏的简单替换,它有类型检查 引用
什么是引用:给这块区域的数据再增加一个名称(本质含义)
表面上看,相当于是变量的别名
引用的特点,在定义的时候必须被初始化
经常适用于函数参数
最大优点:避免了传值调用参数的Copy,既浪费空间又浪费时间,取决于需要
函数的参数能用引用最好用引用,如果不想让形参改变实参加const
函数的返回值如果是引用,最好不要反回局部对象的引用 指针
和const一起使用相关
指针常量、常量指针
const int * p //不需要初始化
int * const p = ? //一定需要初始化 把一个指向const类型的指针直接赋值给普通类型的指针是不允许的
const int * p;
int * q;
q = p; //banned 函数的重载
函数的签名
1.函数名称
2.参数名称
3.参数个数
4.参数顺序
并且跟函数的返回值类型无关 C++中面向对象的三大特点
封装 Encapsulation
继承 Inheritance
多态 Polymorphism 类和对象
什么是对象,什么是类,要清楚基本的概念 构造函数(最重要)
构造函数的特点:
构造函数是成员函数吗?
构造函数主要作用是初始化
构造函数经常被重载
构造函数不能够有返回值类型 几个特别的构造函数
默认构造函数:
自动提供,基本上什么事情都不做 拷贝构造函数:
如果以传值调用的时候需要用到
返回一个对象的时候需要用到
普通创建对象,但是需要另外一个对象 本质:以一个已经存在的对象创建一个新的对象 相关:赋值运算 在C++中 struct 和 class
struct 的默认访问权限是 public
class 是 pravite 缺省参数
经常在构造函数内使用
如何定义缺省参数
某一参数已经定义为缺省参数,它右边的所有参数都要是缺省参数
缺省值的提供可以在两个地方,可以在声明,可以在定义,但是只能定义一次 析构函数
主要的用处在于析构对象,释放资源 析构函数和构造函数的调用顺序(重要)
构造函数和析构函数调用的顺序
在同一个作用域内,谁先出现谁先调用
全局对象,在进入main函数之前,创建全局对象 析构函数调用的顺序刚好喝构造函数相反
如果函数内部有局部对象
函数调用完毕会析构所有的局部对象 如果在 block 中也是也一样 析构函数如果没有定义,C++编译也会提供一个 继承和组合
组合:在一个类中,调用了对象成员
继承和组合的区别:
组合表达的 “has-a” 的关系
继承表达的 “is-a” 的关系
继承强调的是两个类的关系
组合是把一个对象作为另外一个对象的成员 继承的定义:
真正表达是一个继承:公有继承 保护成员访问控制属性以及在类的不同继承方式下
继承的成员作为派生类的什么成员,到时候怎么访问怎么判断 构造函数中如果创建一个派生类对象,构造函数需要怎么调用 构造次序:先调用基类构造函数再调用派生类构造函数 成员初始化列表
初始化的时候最好放在成员初始化列表初始化
如果有多个的话,需要用逗号隔开
初始化顺序只和成员定义的顺序有关 创建一个含有派生类对象成员的派生类对象
构造函数的调用顺序 有很多个构造函数,具体选取哪个取决于参数形式 运算符重载(重要)
两种重载方式:
重载为全局函数 重载成员函数:
该运算符的操作数个数比函数的参数多一个
因为成员函数的this指针所指向的对象作为运算符的第一个操作数 (this 指针很重要 静态成员
静态成员函数 static ,没有this指针
静态数据成员也没有
所谓的静态,不是绑定在一个对象上
而是类的所有对象共享数据 const 修饰成员函数
跟const对象组合使用
在一个const成员函数的内部不能调用非const成员函数 对象的大小size
成员函数函数的代码不在对象中,而是在code segment中 C++对象布局
每一个对象中真正包含的是非静态数据成员的Copy
不需要绑定在每一个对象成员,原因在于this指针 多态(最最重要)
一个借口,多种实现 虚函数
虚函数怎么调用
什么时候会发生多态调用
通过指针,或者引用调用虚函数的时候可能发生多态调用 虚函数的特点:
静态成员函数无法声明为虚函数
定义一个虚函数需要加上virtual 在派生类中覆盖的时候:
派生类中的virtual可写可不写,最好写 Pure Virtual Function
纯虚函数
含有纯虚函数的类叫做抽象类,抽象基类
只能定义引用、指针,无法创建对象 析构函数定义为虚函数
在成员函数内部调用析构函数,是否会发生多态调用 多继承相关了解 虚基类仅作了解 流
流的格式控制
默认情况下输出浮点数保留6为有效数字
流的格式化 模板
函数的模板和类的模板
如何定义一个模板
模板头、模板的参数如何定义
多个参与用逗号隔开
建议用 typename 定义 模板的实例化,隐式和显示
推荐使用显示
模板-部分特化,完全特化仅作了解 定义类的模板的时候,特别是成员函数在类的定义体的外部定义的时候
要提供一个类的名称
这个成员函数需要提供模板头
同时类的名称要有一个变化,加<>,后面有相应的参数 异常处理
异常可以是任何类型的数据,可以是内外部类型数据
在C++标准库中有异常类的提供,仅作了解 要知道异常处理的整个流程
每个 try 语句块要有匹配的 catch 块 捕捉异常的时候不会作隐式类型转化 捕捉所有类型的异常,必须放在多个 catch 块的最后面 异常处理的时候代码执行的流程:
try {
throw
}
catch try {
throw
}
catch 会有相应的匹配 在 throw 语句块发生之前,会被析构 类型的转化
四大类型转化,强制类型转化
static_cast
const_cast
reinterpter_cast
dynamic_cast 隐式类型转化 ==============考试的类型分割线!!================ 1.选择题 10道还是20道,一道2分 2.填空题 10分 答题的时候可以写中文 3.程序阅读题 20分
构造函数析构函数次序、多态、虚函数执行过程
异常处理、流的格式化输出如何 4.程序填空题
定义一个模板等等 5.编程题
制定一个字符串类,构造函数析构函数,成员怎么提供
制定一个复数类,运算符重载
制定一个有理数类
定义一个形状的类的继承结构 人事管理类的结构,不同类型的员工 一句话,类的结构怎么写,参考代码2333333

  


面向对象程序设计-C++ Finial exam review NOTES【第十六次上课笔记】的更多相关文章

  1. 面向对象程序设计-C++ Stream & Template & Exception【第十五次上课笔记】

    这是本门<面向对象程序设计>课最后一次上课,刚好上完了这本<Thinking in C++> :) 这节课首先讲了流 Stream 的概念 平时我们主要用的是(1)在屏幕上输入 ...

  2. 面向对象程序设计-C++ Inheritance & Multiple inheritance & RTTI【第十三次上课笔记】

    Sadly, 这节课带过去的笔记本没电了 T^T 导致没有一行 Code, Sorry 笔记如下: Shape * p1; //使用指针创建对象的方法 p = new Circle (2.0); Sh ...

  3. 面向对象程序设计-C++ Type conversion (Static) & Inheritance & Composition【第十二次上课笔记】

    这节课继续讲解了 static 作为静态数据成员 / 成员函数的用法 具体详解我都已注释出来了,大家可以慢慢看 有任何问题都可以在这篇文章下留言我会及时解答 :) //static 静态数据成员 // ...

  4. 2018面向对象程序设计(Java)第16周学习指导及要求

    2018面向对象程序设计(Java)第16周学习指导及要求(2018.12.13-2018.12.16)   学习目标 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程 ...

  5. 2019面向对象程序设计(Java) 第16周学习指导及要求

    2019面向对象程序设计(Java)第16周学习指导及要求 (2019.12.13-2019.12.16) 学习目标 (1) 掌握Java应用程序的打包操作: (2) 掌握线程概念: (3) 掌握线程 ...

  6. 2018面向对象程序设计(Java)第15周学习指导及要求

    2018面向对象程序设计(Java)第15周学习指导及要求 (2018.12.6-2018.12.9)   学习目标 (1) 掌握Java应用程序打包操作: (2) 了解应用程序存储配置信息的两种方法 ...

  7. 2018面向对象程序设计(Java)第14周学习指导及要求

    2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2)   学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...

  8. 2018面向对象程序设计(Java)第12周学习指导及要求

    2018面向对象程序设计(Java)第12周学习指导及要求 (2018.11.15-2018.11.18)   学习目标 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌 ...

  9. 2018面向对象程序设计(Java)第10周学习指导及要求

    2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4)  学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...

随机推荐

  1. 《windows程序设计》学习_3.4:实现雷区翻转

    #include<windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPAR ...

  2. android 数据持久化——I/O操作

    上一节中简单的介绍了File的操作,这一节来说说使用android平台自带对象实现文件的基本操作 主要的两个类:openFileOutput(写)和openFileInput(读) 向文件中写如数据代 ...

  3. GLView基本分析

    GLView是cocos2d-x基于OpenGL ES的调用封装UI库. OpenGL本身是跨平台的计算机图形实现API,在每一个平台的详细实现是不一样.所以每次使用之前先要初始化,去设置平台相关的信 ...

  4. 获取当前WEB应用全路径

    <%String path = request.getContextPath();String basePath =request.getScheme()+"://"+req ...

  5. objective-C学习笔记(六)继承与多态

    封装 encapsulation 隐藏对象内部实现细节,对外仅提供公共接口访问. (说白了就是属性啊,方法啊全都写在类内,对外只提供访问,不需要了解细节) 继承 inheritance     一个类 ...

  6. java的IO流包装不当导致从网页获取的数据出现乱码

    从网页上获取数据时必须要注意字符集的问题.处理不慎确实苦不堪言. 例如通过URL连接时,将字节流InputStream包装成字符流(以便直接存为String)时,一定要注意加上charsetName这 ...

  7. .net format 中 大括号{}处理

    1.string string.format(string format,object arg0) 错误:因为方法中使用{n}做占位符号了,所以其他需要括号{}的地方,就需要{{}}

  8. hihocoder #1260 : String Problem I

    题目链接   时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 我们有一个字符串集合S,其中有N个两两不同的字符串. 还有M个询问,每个询问给出一个字符串w,求有多少S中的 ...

  9. SQLITE 多进程查询出错database is locked

    程序比较简单: 父进程查询数据库A表,没有更新操作 子进程同时查询数据库A表,查询出来的内容更新B表. 两个进程都放到while(1)循环中,速度慢的话就是2S执行一次就没有错,执行的速度快的话就会报 ...

  10. 一,PHP 语法

    基本的 PHP 语法 PHP 的脚本块以 <?php 开始,以 ?> 结束.您可以把 PHP 的脚本块放置在文档中的任何位置. 当然,在支持简写的服务器上,您可以使用 <? 和 ?& ...