知识点整理

知识点整理

一·标准库容器和算法
1.顺序容器(与前面类似
2.关联容器
map和multimap
元素包含key(键)和值(value)两部分
按照键对元素排序
map不允许重复元素出现,但multimap可以
set和multliset
是包含已排序对象的关联容器
只是单纯的键的集合
set不允许重复键出现
3.常用操作
make_pair(v1,v2)返回用V1v2初始化的元素
快速查找 c.find(k)返回一个迭代器,指向第一个键值为k的元素,若找不到,则返回c.end()
c.lower_bound(k),返回一个迭代器,指向第一个键不小于k的元素
c.upper_bound(k),返回一个迭代器,指向第一个大于k的元素
c.equal_range(k),返回一个迭代器pair,表示键等于K的元素的范围
二·对象的初始化与销毁
1.默认初始化
如果定义对象时没有指定储值,对象被默认初始化,调用默认构造函数,一个类里至少要有两个,构造函数,一个默认的
2.直接初始化
初始值在圆括号中看情况调用
3.拷贝初始化
用等号右边的对象创建一个新对象赋值给左边
4.列表初始化
用花括号里的初始值构造一个对象,也可以是一个列表
5.默认构造函数
可以不提供试餐就能调用的构造函数,类里一定要有
6.隐式类型转换构造函数
构造函数会引起数据类型向类类型的自动转换,如果不需要这种转换可在前面加一个explicit
7.析构函数
~类名
一般隐式调用除非要干什么事
assert(condition)判断是否销毁
8.拷贝控制成员
用已知对象初始化新对象
逐项赋值,这种行为被称为浅复制
当类中包含指针或引用成员时,浅复制行为并不适用
深复制,先创建资源,后赋值,改掉了默认的,引用原来对象的值
一般形式是X(X&)或者说是X(const X&)
三·运算符重载
定义重载运算符和定义普通函数类似
函数名由关键字operator 和其后要定义的运算符组成
返回类型:运算结果的类型
参数表:提供参与运算的操作数
参数个数取决于运算符的操作数个数和运算符函数是成员函数还是非成员函数
函数体:进行运算,返回运算结果,即表达式的值
一元运算符函数不需要提供参数
二元运算符提供一个参数作为右操作数
通常声明为类的友元,以便访问私有数据成员
不能重载 && || , &
设计类时,只有操作是类需要的,且在逻辑上与运算符相关,才适合定义成重载的运算符
赋值(=)、下标([])、函数调用(())和成员函数访问箭头(->)运算符必须是成员函数
ex:
X的成员运算符函数operator+()类外定义
X X::operator+(const X& right){…}
X的非成员运算符函数operator+()
X operator+(const X& left, const X& right){…}
输入输出运算符的重载
“>>”和“<<”可以用于内置类型数据的I/O流输入和输出,如果希望用户自定义类型以这种方式输入和输出,就需要重载“>>”和“<<”
istream& operator>>(istream&, type&);
ostream& operator<<(ostream&, const type&);
只能在类外定义,友元
四·继承
继承:在已有类的基础上创建新类的过程
一个 B 类继承A类,或称从类 A 派生类B
被继承的已有类称为基类;
继承得到的新类称为派生类;
派生类可以再被继承,这样构成的层次结构称为继承层次
类继承关系的语法形式
class
派生类名 : 基类名表

  {

         数据成员和成员函数声明

  };

基类名表 构成
访问控制 基类名1, 访问控制 基类名2 ,… , 访问控制 基类名n
public 公有继承
private 私有继承
protected 保护继承
派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员
在派生类中使用基类的同名成员,显式地使用类名限定符:
类名 :: 成员
在创建派生类对象时用指定参数调用基类的构造函数来初始化派生类继承基类的数据
派生类构造函数声明为
派生类构造函数 ( 变元表 ) : 基类 ( 变元表 ) , 对象成员1( 变元表 )
… 对象成员n ( 变元表 ) ;
构造函数执行顺序:基类  对象成员 派生类
基类的构造函数和析构函数不能被继承
五·虚函数与多态性
1.多态性是指一个名字,多种语义;或界面相同,多种实现。
重载函数是多态性的一种简单形式。
2.虚函数允许函数调用与函数体的联系在运行时才进行,称为动态联编。
带virtual 的成员函数称为虚函数
一个虚函数,在派生类层界面相同的重载函数都保持虚特性
虚函数必须是类的成员函数
虚函数可以是另一个类的友元
3.析构函数可以是虚函数,但构造函数不能是虚函数
在派生类中重载基类的虚函数要求函数名、返回类型、参数个数、参数类型和顺序完全相同
析构函数可以是虚的。虚析构函数用于指引 delete 运算符正确析构动态对象
4.纯虚函数是一个在基类中说明的虚函数,在基类中没有定义, 要求任何派生类都定义自己的版本
说明形式: virtual 类型 函数名(参数表)= 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值