c++ base
近期又过了一遍c++基础,为了加深印象,暂且罗列了一些比较简单的概念,如有错误之处还望批评指正,因为我也不想误导他人。不得不说,c++有很多值得研究和记录的地方,后续应该会一一道来。
概念 | 介绍 |
---|---|
void类型 | 说明函数无返回值或指针是无类型的。 |
const修饰符 | 定义常量 |
声明和定义 | 声明:表明变量的类型和名称。 定义:是一种声明,当同时为变量分配了存储空间,并且可以对变量进行初始化。 在一个程序中,变量只能被定义一次。 |
include “”和<> | <>通常用于引入系统标准头文件,编译器直接在系统文件目录下查找。 “”通常用于引入自定义文件,编译器查找顺序:当前程序目录 -> c/c++安装目录 -> 系统文件目录 |
虚函数 | 建立抽象模型,实现动态联编(在程序运行时动态地选择合适的成员函数),以达到扩展系统的目的。 虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。 动态解析规定,只能通过指向基类的指针或基类对象的引用来调用虚函数。 在派生类中,如果一个派生类函数的名称和参数列表与基类中声明的虚函数相同,则返回类型也必须与虚函数一致。 如果出现不一致的情况,这个派生类函数就不会被编译。 此外,虚函数也不能作为模板函数使用。 |
纯虚函数 | 实现多态。 基类无法给出有意义的实现,被标为不具体实现的虚函数,一种特殊的虚函数。 纯虚函数的实现由派生类来执行,含有纯虚函数的类是抽象类(不能生成对象)。 |
数组指针 | 指向一个数组的指针。 |
指针数组 | 数组中的每个元素都是指针。 |
引用传递 | 传递的是引用对象的内存地址。 |
指针 vs 引用 | 1. 指针是一个实体,指向一块内存地址。引用是某块内存的别名; 2. 引用使用时无需解引用,指针需要解引用(*); 3. 引用只能在定义时被初始化一次,之后不可变,指针可变; 4. 引用没有const,指针有; 5. 引用不能为空,指针可以; 6. sizeof引用得到的是所指向变量的大小,而sizeof指针得到的是指针本身的大小; 7. 指针和引用的自增运算意义不一样,指针自增的是地址,而引用自增的是实际变量值; 8. 在内存分配上,程序为指针变量分配内存区域,而引用不需要分配内存区域。 |
浅复制(浅拷贝) | 在对象复制时,只对对象中的数据成员进行简单的赋值。默认的复制构造函数执行的是浅复制。 |
深复制(深拷贝) | 不仅仅是简单的赋值,而且重新动态分配空间。 |
内联函数(inline) | 解决函数调用的效率问题。在类声明的内部声明或定义的成员函数,使用关键字inline声明。 内联函数内不允许使用循环语句和开关语句,否则编译器将其是为普通函数。 内联函数的定义必须出现在第一次被调用之前。 |
静态函数 | 只能访问静态变量,因为静态函数没有this指针。 |
函数重载 | 在相同作用域中,函数名相同,但形参列表不同。 函数调用的匹配顺序:精准匹配>标准转换匹配>类类型转换匹配。 |
c++ base
https://r-future.github.io/post/cplusplus-base/