C/C++学习要点总结
C语言基础
C语言概述
- C语言特点
- 简洁而高效:C语言设计简洁,语法规则相对简单,学习容易上手。同时,C语言的编译器通常能够生成高效的机器代码,执行效率高。
- 面向过程:C语言是一种面向过程的语言,它的设计思想是通过一系列的步骤来完成任务,强调程序的执行过程和控制流程。
- 可移植性强:C语言的标准库和语法规范相对稳定,使得用C语言编写的程序在不同的计算机平台上具有较好的可移植性,只需要进行少量的修改就可以在不同的系统上运行。
- 丰富的标准库:C语言提供了丰富的标准库,包括输入输出、字符串处理、内存管理等方面的函数,可以方便地进行各种操作。
- 直接访问内存:C语言允许直接访问计算机内存,可以进行底层的操作,这使得C语言在系统编程和嵌入式系统开发中得到广泛应用。
- 支持指针:C语言支持指针,可以直接操作内存地址,这样可以更灵活地进行内存管理和数据操作,但也增加了程序出错的可能性。
- 可扩展性:C语言支持通过函数和模块化的方式进行程序设计,可以方便地扩展和维护程序。
- 认识C程序
算法
- 什么是算法
- 算法怎么描述
分支语句、循环
- if else
- for()
- while
- switch
- do...while()
数据类型
- 整型
- int、short、long、long long
- 浮点型
- float、double、long double
- 字符型
- char、string
- 布尔型
- bool
运算符与表达式
- 算术运算符
- 逻辑运算符
- 关系运算符
- 赋值运算符
- 位运算符
函数
- 函数是什么
- 函数声明
- 函数的参数、返回值
- 函数的调用
数组
- 一维数组、二维数组、字符数组
- 数组的初始化
- 数组的应用
指针初识
- 指针是什么
- 数组与指针
- 空指针
- 野指针
C语言进阶
指针深入
- 指针变量作函数参数
- 指针函数与函数指针
- 指针的各种使用场合
文件操作
- 文件基本操作
- 文件读写
- 基于文件描述符的IO操作
内存管理
- 内存组织方式
- 动态内存管理
预处理
- 宏定义
- #include指令
- 条件编译
位运算
- 位与字节
- 运算
多线程编程
网络编程
C++基础
C++语法
- 变量声明
- 数据类型
- 运算符
- 控制流程语句
C++函数
- 定义
- 调用
- 传递方式
- 值传递
- 引用传递
- 指针传递
- 函数重载
- 优点:不需要再想其他的名字。
- 根据函数的返回值类型,函数的形参,形参的个数,形参的顺序,从而确定匹配的重载函数。
- 重载匹配原则
- 严格匹配
- 对于实参传值int类型,可以匹配short int,可以匹配char,可以匹配long,可以匹配double类型。
- 对于实参传值double类型,可以匹配float。
类和对象
- 成员变量
- private
- protected
- public
- 成员函数
- 重载成员函数
- 调用成员函数
- 对象调用
- 指针传递调用
- 应用传递调用
- 在成员函数中访问成员变量
- 加this
- 不加this
- 类的作用域
- 可见性
- 类名与变量名一样
- 类名与函数名一样
- 类名与成员函数名一样是构造函数
- 构造函数
- 构造函数的特点:函数名与类名一致,无返回值,也没有void,对象产生时会自动调用构造函数。
- 无参构造函数
- 默认构造函数,不需要手动调用。
- 自定义无参构造函数
- 带参构造函数
- 负责创建对象的同时,初始化对象成员变量。
- 如果一个类定义了一个带参构造函数,那这个类就不提供构造函数,需要自己定义。
- 重载构造函数
- 默认参数的构造函数
- 注意点:在开发过程中,防止调用A a(),却没有实现它,所以我们默认定义一个无参构造函数的实现。
- 拷贝构造函数
- 默认拷贝构造函数:一个成员一个成员的拷贝,成员如果是普通类型的,就简单的值拷贝,成员如果是类对象,则调用其拷贝构造函数或默认拷贝构造函数。
- 深拷贝
- 只是拷贝一个指针,并没有新开辟一个地址,拷贝的指针和原来的指针指向同一块地址, 如果原来的指针所指向的资源释放了,那么再释放浅拷贝的指针资源就会出现错误
- 浅拷贝
- 浅拷贝拷贝的仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应的改变
- 析构函数
- 析构函数的特点
- 虚析构函数
- 构造对象过程
- 局部对象和静态对象,以声明的对象构造,静态对象只被构造一次。
- 类的数据成员在其类中以声明的顺序构造
面向对象的三大特征
封装
- 隐藏对象的属性和实现细节,仅仅对外提供接口和方法。
- 优点:1)隔离变化;2)便于使用; 3)提高重用性; 4)提高安全性
- 缺点:1)如果封装太多,影响效率; 2)使用者不能知道代码具体实现。
继承
- 单继承
- 多继承
- 菱形继承
多态
- 静态多态(编译时)
- 函数模板和重载
- 动态多态(运行时)
- 虚函数
- 静态多态(编译时)
默认参数的函数
- 优点:调用函数时,不指定参数,按指定的默认值进行工作。
- 带默认参数函数的声明:函数声明和函数的定义默认值只能允许给一次
- 多个形参的默认值,从右向左定义,不能跳着给默认值,函数在调用匹配的时候从左向右匹配。
标注库
C++进阶
模板
- 类模板
- 函数模板
STL库
- vector
- deque
- list
- map/unordered_map
- set/unordered_set
C11/C17/C20新特性
多线程编程
- 线程同步和互斥机制
- std::thread
- std::mutex
Lambda表达式
- 语法
- 用法
移动语义和右值引用
- 概念
- 用法
- 应用场景
智能指针
- shared_ptr
- unique_ptr
- weak_ptr
- auto_ptr(已弃用)
设计模式
- 工程模式
- 单例模式
- 观察者模式
