今天先把笼统的写出来,明天要笔试,时间有点来不及。
C++是C语言的超集
C++继承了基本C语言的29个头文件
STL、
异常处理(C++11)——、
Lambda(C++11)——函数式编程
类和对象——面向对象
模版——泛型编程
头文件有130个
关于标准头文件,windows.h不是,特定环境下才能用
STL sort map vector
编程范式
C可以实现面向对象、泛型编程。
学习方法
根据编程范式学习,在工作岗位也是要什么学什么。C++primeplus太厚了,硬啃太难
Effective C++
条款01:视c++为一个语言联邦
条款02:尽量以const/enum/inline替换#define
宁肯以编译器替换预处理器
#define 在预处理时会完成替换过程,所有宏堆编译器不可见。
本质上就是为了方便调试
条款03:尽可能使用const
将某些东西声明为const可以帮助编译器检测出错误用法。const可被施加于任何作用域的对象
const类型的对象不可以调用const类型的方法,因为const类型的方法有可能会修改const类型对象的成员属性
条款04:确定对象被使用前已经先被初始化
为内置型对象进行手工初始化,因为c++并不保证会初始化它们
构造函数最好使用成员初值列,而不要在构造函数本体内使用复制操作。初值列列出成员变量,其排列次序应该和它们在class中的声明次序相同。
实际顺序 == 代码书写顺序
oj题目:145货仓地址
nth_element()学习
oj题目:166字符串操作
string类的三种方法
216名字排序
使用map<string, int> h
iter = h.begin()
287合并果子
和哈夫曼编码之间的关系
使用优先队列,a = top,pop
b = top pop
sum += a + b
Push(a + b)
256国王游戏
手上两个数字乘积越小越往前排
ai * bi < ai-1 * bi - 1
为免除“跨编译单元之初始化次序问题”,请以local static对象 替换non-static对象v、
面向对象
类型与变量
类与对象的别名
类型 = 类型数据 + 类型操作
访问权限
this指针,指向本对象
命名空间,class是一个特殊的命名空间
实现一个cout简版
cout本质上是个对象
const的使用,返回引用?
构造函数与析构函数
默认构造 people a
带参构造 people a(“hug”),一个参数的构造函数是转换构造。
拷贝构造 people(const people &a) 与=不等价
~people() 无
移动构造 stl没有左值右值的的概念,导致大量发送深拷贝,影响c++性能,c++11重回神坛
c++学习的重点,程序的处理流程,学会原理才能更好使用
转换构造 A(int x) A a; a = 123匿名对象,调用转换构造
拷贝构造 A(A a) A b = a;拷贝构造不能值传递
左值引用
const兼容处理
深拷贝
new和malloc
原地构造new()