没有合适的资源?快使用搜索试试~ 我知道了~
八股文C++篇(超级全)-c++八股文.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 100 浏览量
2024-02-23
14:29:45
上传
评论 2
收藏 1.27MB PDF 举报
温馨提示
试读
18页
八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf 八股文C++篇(超级全)_c++八股文.pdf
资源推荐
资源详情
资源评论
2024/2/23 14:14
⼋
股
⽂
C++
篇
(
超
级
全
)
_c++
⼋
股
⽂
-CSDN
博
客
https://blog.csdn.net/m0_50816320/article/details/129326768?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.no
…
1/18
八股文C++篇(超级全)
文章目录
const
说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么,有什么特点。
const成员函数
const和#define的区别
什么const在常量区,什么const在栈区,什么const放入符号表优化
C++内存分区(五)
内存对齐
原因
什么时候不应该内存对齐?
内存对齐的规则
虚函数
作用
实现
纯虚函数
虚函数在什么时候调用?
大小
C++ 中哪些函数不能被声明为虚函数?
为什么虚函数不能是模板函数?
虚函数表既然希望类的所有对象共享为什么不放在全局区
菱形继承
类型转换
static_cast
dynamic_cast
dynamic_cast和虚函数的区别
reinterpret_cast
const_cast
volatile关键字
构造函数一大家子
拷贝构造函数
什么时候调用拷贝构造函数?
析构函数
为什么要用虚的?
移动构造函数
C++类内是否可以定义引用?
模板类
模板实例化
模板具体化
模板为了解决什么问题?
模板的声明和定义为什么不能分开写,要想分开写该怎么做
模板特化
全特化
偏特化
模板在编译时生成的代码是否会相同,生成的相同的代码如何处理
C++ 类对象的初始化顺序
STL
容器
顺序型容器
vector
第二个模板形参?
vector调用resize的时候,如果是元素是一个类,会不会调用这些函数的析构函数?
使用Vector需要注意什么?
如果扩容时会引发自定义类型挨个复制构造,C++有什么机制来避免这一点
deque
list
关联式容器
set
map
红黑树的性质,各种操作时间复杂度
unordered_map
哈希表跟红黑树的比较,优缺点、适用场合,各种操作的时空复杂度
2024/2/23 14:14
⼋
股
⽂
C++
篇
(
超
级
全
)
_c++
⼋
股
⽂
-CSDN
博
客
https://blog.csdn.net/m0_50816320/article/details/129326768?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.no
…
2/18
空间配置器
定义
背景
实现
迭代器
迭代器用过吗?什么时候会失效?
迭代器的作用
迭代器相较于指针
说说 STL 中 resize 和 reserve 的区别
resize:
reserve:
STL 容器动态链接可能产生的问题
push_back 和 emplace_back 的区别
STL 中 vector 与 list 具体是怎么实现的?常见操作的时间复杂度是多少?
新特性
智能指针
share_ptr
unique_ptr
weak_ptr
怎么知道weak_ptr失效了没
lambda表达式
lambda语法:
[capture]含义
(parameters)含义
mutable 或 exception 声明
->return-type->
{statement}{函数体}
Lambda表达式如何对应到函数对象
圆括号传参数是如何实现的
方括号捕获外部变量(闭包)是如何实现的
右值引用
由来
增加右值引用之后
移动语义
如何将左值强制转换为右值?
移动构造函数和拷贝构造函数的区别
转发和完美转发
常规转发
完美转发
auto关键字,lambda表达式,nullptr,成员初始化列表
static关键字
面向过程
面向对象
初始化
C++编译过程
动态链接和静态链接
内联函数
定义
意义
哪些不适合作为内联函数
使用内联的缺点
和宏的区别
程序启动的过程
多态
静态多态
动态多态
虚函数
动态绑定
多态的好处
多态的形式
杂项
32位整型在大小端的区别 (0x12345678)
一个空类的大小是几字节?
指针和引用的区别
浅拷贝和深拷贝的区别?
struct和class的区别
2024/2/23 14:14
⼋
股
⽂
C++
篇
(
超
级
全
)
_c++
⼋
股
⽂
-CSDN
博
客
https://blog.csdn.net/m0_50816320/article/details/129326768?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.no
…
3/18
导入C函数的关键字是什么,C++编译时和C有什么不同?
函数指针
new和malloc
delete如何知道该释放多大的空间,这些信息存在什么位置
delete[]和delete的区别,基本数据类型的数组使用delete可以释放完全吗
堆和栈的区别
内存泄漏
说说C++的重载和重写是如何实现的
重载
重写
说说 C 语言如何实现 C++ 语言中的重载
简述下向上转型和向下转型
子类转换为父类
父类转换为子类
请问构造函数中的能不能调用虚方法
那么析构函数中能不能调用虚方法
请问拷贝构造函数的参数是什么传递方式,为什么
仿函数
C++中类模板和模板类的区别
64位系统存一个地址多大空间
函数传递时会不会在内存拷贝
为什么要使用友元?
检查内存泄漏的方法
C++编译和C编译的区别
如何判断一段函数是C++编译的还是C编译的
如何在不用sizeof的情况下判断系统是多少位
重复多次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释
为什么函数传递数组参数,结果数组会被修改,而值不行?
main 函数执行以前,还会执行什么代码?
字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?
C++几个基本类型占用空间
继承时应该要写哪些类的成员函数
怎样让对象只能创建在栈/堆/内存池中
RTTI原理,type_info信息存在虚函数表的哪里
C++在哪些情况下会产生临时对象
C++静态链接库(lib)和动态链接库(dll)的区别
memory_move和memory_copy两者的作用和区别
const
说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么,有什么特点。
const int *a==int const *a:都是指a所指向的值不能改,但是a可以指向别的东西
const int a:a变量变成常量,不可修改
int *const a:a的值可以更改,但是指向它的指针不能更改
int const *const a:a本身和指向它的指针都不能更改
const成员函数
常函数内不能修改成员变量
对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
例如,假设有一个类A,它有一个私有成员变量x和一个公有成员函数getX(),如果getX()返回x的引用,并且不加const修饰,那么就可以这样写:
A a;
a.getX() = 10; //修改了x的值
这样就破坏了类的封装性和数据安全性。但如果getX()返回x的引用,并且加上const修饰,那么就会报错
const和#define的区别
(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。
而对后者只进行 字符替换 ,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应) 。
(2)有些集成化的调试工具可以对 const 常量进行调试,但是不能对宏常量进行调试。
(3)#define是在编译的预处理阶段起作用,而const是在编译、运行的时候起作用。
(4)#define定义的常量不分配内存,而const定义的常量会分配在常量存储区中。
2024/2/23 14:14
⼋
股
⽂
C++
篇
(
超
级
全
)
_c++
⼋
股
⽂
-CSDN
博
客
https://blog.csdn.net/m0_50816320/article/details/129326768?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.no
…
4/18
什么const在常量区,什么const在栈区,什么const放入符号表优化
如果const修饰的是全局变量放到常量区
如果const修饰的是局部变量放在栈区
如果const修饰的变量没有被使用则会放到符号表中,其内容不会分配空间
C++内存分区(五)
堆区
栈区
全局/静态区
常量区
程序代码区
内存对齐
经过内存对⻬之后,CPU 的内存访问速度⼤⼤提升。因为 CPU 把内存当成是⼀块⼀块的,块的⼤⼩可以是 2,4,8,16 个字节,因此 CPU 在读取内存的时候是⼀
块⼀块进⾏读取的,块的大小称为内存读取粒度。⽐如说 CPU 要读取⼀个 4 个字节的数据到寄存器中(假设内存读取粒度是 4),如果数据是从 0 字节开始的,那
么直接将 0-3 四个字节完全读取到寄存器中进⾏处理即可。
如果数据是从 1 字节开始的,就⾸先要将前 4 个字节读取到寄存器,并再次读取 4-7 个字节数据进⼊寄存器,接着把 0 字节,5,6,7 字节的数据剔除,最后合并
1,2,3,4字节的数据进⼊寄存器,所以说,当内存没有对⻬时,寄存器进⾏了很多额外的操作,⼤⼤降低了 CPU 的性能。
原因
平台原因:不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
性能原因:应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次就可以了。
什么时候不应该内存对齐?
什么时候不希望进行内存对齐呢?一般来说,当我们追求空间效率而不是时间效率时,我们可以选择取消或者减小内存对齐。例如,在 嵌入式系统 中,由于资源有限,
我们可能更关心节省空间而不是提高速度。此时我们可以使用编译器提供的选项来调整或者关闭内存对齐。
内存对齐的规则
对于结构体的各个成员,第一个成员位于偏移为0的位置,结构体第一个成员的偏移量(offset)为0,以后每个成员相对于结构体首地址的offset都是该成员大小与有效对
齐值中较小那个的整数倍,如有需要编译器会在成员之间加上填充字节。
有效对齐值是给定值#pragma pack (n)和结构体中最长数据类型长度中较小的那个,其中n是编译器提供的选项,可以是1,2,4,8,16等
除了结构成员需要对齐,结构本身也需要对齐,结构的长度必须是编译器默认的对齐长度和成员中最长类型中最小的数据大小的倍数对齐。
虚函数
作用
父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。
实现
每个虚函数都会有一个与之对应的虚函数表,该虚函数表的实质是一个指针数组,存放的是每一个对象的虚函数入口地址。对于一个派生类来说,他会继承基类的虚函数表
同时增加自己的虚函数入口地址,如果派生类重写了基类的虚函数的话,那么继承过来的虚函数入口地址将被派生类的重写虚函数入口地址替代。那么在程序运行时会发生
动态绑定,将父类指针绑定到实例化的对象实现多态。每个类只有一个虚函数表,虚函数表是在编译的时候就确定的了。
纯虚函数
用户不能创建基类的实例,只能创建派生类的实例
虚函数在什么时候调用?
虚函数在运行时根据实际对象的类型来确定调用哪个函数,而不是根据指针或引用的类型来确定。当一个虚函数被定义为类的成员函数时,它会被标记为虚函数。在调用虚
函数时,程序会查找该函数的实际类型,并在运行时调用该类型的实现。这就允许程序在运行时动态地选择执行哪个版本的虚函数,从而实现多态性。虚函数通常与基类指
针或引用一起使用,可以实现基类指针或引用调用派生类的函数。
大小
虚函数表是一个存储虚函数指针的数组,每个类有一个虚函数表,每个对象有一个指向虚函数表的指针。虚函数表的大小取决于类中有多少个虚函数,而对象中的虚函数表
指针的大小取决于编译器和操作系统2。一般来说,在32位系统下,指针占4个字节,在64位系统下,指针占8个字节。
C++ 中哪些函数不能被声明为虚函数?
构造函数:构造函数不能被声明为虚函数。因为构造函数是用来创建对象的,而虚函数是根据对象的类型来动态调用的。如果构造函数是虚函数,那么在创建对象时就无法
确定调用哪个版本的构造函数,会导致逻辑错误
友元函数:你说得对,构造函数不能被声明为虚函数。因为构造函数是用来创建对象的,而虚函数是根据对象的类型来动态调用的。如果构造函数是虚函数,那么在创建对
剩余17页未读,继续阅读
资源评论
易小侠
- 粉丝: 6449
- 资源: 9万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- yolo目标检测项目实验
- downloadFile-1.hc
- Centos7.9环境下离线安装开源版Nginx(亲测版)
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
- 关于学习Python的相关资源网站链接及相关介绍.docx
- (HAL库)基于STM32F103C8T6的温控PID系统[Dht11、ESP8266、无线透传、L298N……]
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功