C++八股文

一、语法

1、C++11的新特性

统一的列表初始化:可以使用{}来初始化所有类型的变量
智能指针
nullptr:专门用来区分空指针、0
类型推导:auto
基于范围的for循环:for(auto c:str)

2、存储

负数:负数在计算机中使用正数的补码存储,如-1是使用1的补码存储。
ASCII码表:是一种广泛使用的字符编码标准,用于表示文本中的字符。定义了128个字符,每个字符对应一个7位的二进制数(0到127)。

3、变量

变量类型 作用域 生命周期 线程之间 特点
全局变量 全局,所有源文件均可见 与进程一致 不同线程共用
静态全局变量 文件,当前文件可见 与进程一致 不同线程共用
局部变量 局部,以 {} 为作用域 只在函数执行期间存在 独立 函数运行结束自动销毁
静态局部变量 局部,仅函数内可见 与进程一致 独立 只能被初始化一次
字节对齐(内存对齐)

#progma pack(x) 指定结构体以 x 为单位进行对齐。

智能指针

析构函数自动释放内存,无需free和delete操作
智能指针不支持加减操作。

浅拷贝和深拷贝

主要体现在类的复制构造函数和赋值操作上
当类中有指针变量,且指针变量指向一片数据时,默认复制构造函数采用的是浅拷贝,只会复制指针的值,而不会申请内存拷贝指针指向的数据;深拷贝需要重写默认复制构造函数

static

静态变量的存储位置在静态存储区

类型 特点
静态成员变量 所有对象共享、类中声明类外定义并初始化、编译阶段分配内存
静态成员函数 所有对象共享同一个函数、静态成员函数只能访问静态成员变量
静态全局变量 从定义该变量的开始位置到文件结尾可见,别的文件不可见、未被初始化的静态全局变量会被自动初始化为0
静态局部变量 与局部变量的作用域一致
静态函数 作用域为当前源文件
多态

虚函数
函数重载

左值引用/右值引用/万能引用

左值:可以取址的变量
右值:临时变量、函数返回值、运算表达式、除string之外字面值常量
引用特点:不会重新分配内存,不会调用构造函数和析构函数
右值引用的作用:1、延长了右值的生命期,避免拷贝时多次调用构造函数以优化性能;2、可以实现完美转发(即参数再传递),提升了模板的功能。
万能引用:针对模板,T&&,可自动识别左值和右值。

拷贝构造函数

又名复制构造函数
场景:
对象作为函数参数,且以值传递的方式传入函数体时;
对象作为函数返回值,且以值传递的方式从函数中返回时;
对象给另一个对象进行初始化时。

二、STL

stl 数据结构 特点 复杂度 其他
vector 动态数组 尾部插入O(1);随机插入O(N);查找O(N)
map 红黑树 key唯一,有序,从begin()到end()升序 增删和查找:O(logN)
unordered_map 哈希表 key唯一,无序 插入和查找:平均O(1);最坏O(N)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值