- C++的面向对象四大特性:
a. 封装 b. 抽象 c. 继承 d. 多态
- C++基本语法:
C++可以定义为对象的集合,对象通过调用彼此的方法进行交互。
- 对象是类的实例。
- 数据类型:七种基本数据类型:
a. 布尔型 bool
b. 字符型 char
c. 整型 int
d. 浮点型 float
e. 双浮点型 double
f. 无类型 void
g. 宽字符型 wchar_t (typedef short int wchar_t)
- 变量声明:
可以在多个文件中多次声明变量(使用extern可以在任何地方声明变量),但只能在一个文件中定义同一个变量。
- 变量作用域:
a. 函数或代码快内部:局部变量
b. 函数参数:形式参数
c. 所有函数外部:全局变量
- 常量:
固定值,定义后不再改变。
- 整数常量:
十进制/八进制(前缀基数0)/十六进制(前缀基数0x/0X)
- 定义常量的方式:
a. #define
b. 使用const
- 把常量定义为大写字母。
- 数据修饰符类型:signed/unsigned/long/short
- 类型限定符:
a. const: 常量在程序执行期间不能被改变;
b. volatile:编译器不优化volatile声明的变量,让程序可以直接从内存中读取变量。
c. Restrict ;
- 存储类定义函数/变量的范围和生命周期:
a. auto (C++17开始,auto不再是存储类说明符)
b. register (C++17开始,register被弃用)
c. static : i. 修饰局部变量,可以在函数调用之间保持局部变量的值; ii. 修饰全部变量,使变量的作用域限制在声明它的文件内; iii. 修饰类数据成员,导致仅有一个该成员的副本被类的所有对象共享
d. extern : i. 提供全局变量的引用,全局变量对所有文件都是可见的; ii. 使用"extern"时,对于无法初始化的变量,会把变量名指向之前定义过的存储位置; iii. extern是用来在另一个文件中声明一个全局变量或函数;
e. mutable : i. 仅适用于类的对象。允许对象的成员替代常量。mutable成员可以通过const成员函数修改;
f. thread_local : i. 其声明的变量,在创建线程时创建,在销毁线程时销毁; ii. 仅仅用于数据声明和定义,不能用于函数声明和定义。
- C++数组:固定大小/相同类型元素的集合。
a. 连续内存,索引访问;
b. 声明数组,需指定元素类型与数量;
c. 初始化数组;
d. 多维数组;
e. 指向数组的指针:数组名是指向数组第一个元素的常量指针;
f. 传递数组给函数: i. 数组类型自动转换为指针类型,因而实际传的是地址;ii. 对于函数而言,数组的长度无关紧要,因为C++不会对形式参数执行边界检查;
g. 从函数返回数组:i. C++不允许返回完整的数组,但允许返回指向数组的指针(不带索引的数组名可以表示一个指向数组的指针); ii. 如果想从函数返回一个数组,则必须声明一个返回指针的函数; iii. C++不支持在函数外返回局部变量的地址,除非定义局部变量为static变量;
- C++字符串:使用字符’\0’终止的一维字符数组。
a. strcpy() b. strcat() c.strlen() d. strcmp() e. strchr() f. strstr()
- C++中的String类
#include <string>
- C++指针
a. 所有指针的值的实际数据类型,都是代表一个内存地址的长的十六进制数。
b. NULL指针,空指针,值为0,表明该指针不指向一个可访问的内存位置,如需检查空指针,使用if();
c. 指针的算术运算:++/–/+/-;
d. 变量指针可以递增,数组不能递增,因为数组是一个常量指针;
e. 指针的比较:==/</>;
f. 指针数组:数组的每个元素都是指针;
g. 指向指针的指针:多级间接寻址 h. 传递指针给函数: i. 只需声明函数参数为指针类型; ii. 能接受指针作为参数的函数,也能接受数组作为参数; iii. 从函数返回指针:和从函数返回数组类似,声明一个返回指针的函数即可。
- 引用:
a. 引用变量是一个别名,它是某个已经存在变量的另一个名字;
b. 引用与指针的对比: i. 不存在空引用,引用必须连接到一个合法的内存;指针可以为空指针; ii. 一旦引用被初始化为一个对象,就不能指向另一个对象。指针可以在任何时候指向其他对象; iii. 引用必须在创建时初始化;指针可以在任何时间初始化;
c. 把引用作为返回值: i. 当返回引用时,注意被引用的对象不能超出作用域; ii. 返回一个对局部变量的引用是不合法的; iii. 可以返回一个对静态变量(static修饰)的引用。
- C++标准库没有提供日期类型,继承C语言用于日期和时间操作的结构和函数,
#include <ctime>
- C++基本的输入输出
#include <iostream>
#include <fstream>
cout/cin/cerr/clog
- C++数据结构
a. 用户自定义的可用的数据类型,允许存储不同类型的数据项;
b. struct type_name{} object_name;
c. 访问结构成员,成员访问运算符(.);
d. 结构作为函数参数;
e. 指向结构的指针,使用指向结构的指针访问结构的成员,必须使用->运算符;
f. typedef
更多学习资料,请关注下面的公众号:不定期分享
深度学习网络总结
机器学习算法及其应用场景
算法与数据结构(leetcode 题解)
cuda编程与并行优化
其他读书分享如:《战国策》,《智囊全集》
宇宙常识科普与星座辨别等等