zoukankan      html  css  js  c++  java
  • 面向对象程序设计-C++ Finial exam review NOTES【第十六次上课笔记】

    写在前面:

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


    常量
    
    内敛函数
    	为什么需要内敛函数
    	内敛函数适用于什么场合
    
    	内敛函数本身,最大优点是,避免了真正函数调用的开销
    	因为普通函数调用会有开销,比如开辟一个栈,结束了还要释放局部变量
    	如果函数体只有寥寥几行,是不值得使用函数
    	在函数体代码比较短小的时候,使用频繁的,应该使用内敛函数
    	最大优点:没有函数调用开销,又解决了带有参数宏的简单替换,它有类型检查
    
    引用
    	什么是引用:给这块区域的数据再增加一个名称(本质含义)
    	表面上看,相当于是变量的别名
    	引用的特点,在定义的时候必须被初始化
    	经常适用于函数参数
    	最大优点:避免了传值调用参数的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
    

      


  • 相关阅读:
    常用方法 反射常见方法
    常用方法 字符串是否是中文
    常用方法 读取 Excel的单位格 为 日期格式 的数据
    常用方法 保证数据长度相同
    常用方法 简单缓存
    P1821 [USACO07FEB]银牛派对Silver Cow Party
    P3905 道路重建
    关于宏定义
    P3512 [POI2010]PIL-Pilots
    P2398 GCD SUM
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/4576642.html
Copyright © 2011-2022 走看看