没有合适的资源?快使用搜索试试~ 我知道了~
首页"面试前一天的备战策略:项目经历、机试题目、动态规划、二叉树、海岛、回文串、C语言头文件避免重复引用"
"面试前一天的备战策略:项目经历、机试题目、动态规划、二叉树、海岛、回文串、C语言头文件避免重复引用"
需积分: 0 0 下载量 4 浏览量
更新于2023-11-24
收藏 909KB DOCX 举报
#pragma once b)使用#ifndef和#endif宏定义 c)使用#ifdef和#endif宏定义 在进行头文件引用时,我们经常会遇到一个问题,就是同一个头文件被多次引用,从而导致编译错误。为了解决这个问题,我们可以采用以下三种方法来防止头文件重复引用。 1. 使用#pragma once #pragma once是一种比较新的方法,它能够确保头文件只被编译一次。这种方法不仅简洁方便,而且效率也比较高。只需要在头文件的开头添加一行#pragma once即可。 2. 使用#ifndef和#endif宏定义 #ifndef和#endif宏定义结合起来可以达到防止头文件重复引用的效果。具体做法是:在头文件的开头添加#ifndef宏定义,然后在结尾处添加#endif宏定义,并在#ifndef宏定义中定义一个与头文件名称相关的宏标识符。当这个宏标识符未定义时,表示头文件尚未被引用过,可以继续编译;当这个宏标识符已经被定义过时,表示头文件已经被引用过,就不需要再次编译了。 3. 使用#ifdef和#endif宏定义 #ifdef和#endif宏定义结合起来也可以达到防止头文件重复引用的效果。具体做法是:在头文件的开头添加#ifdef宏定义,然后在结尾处添加#endif宏定义,并在#ifdef宏定义中定义一个与头文件名称相关的宏标识符。当这个宏标识符已经被定义过时,表示头文件已经被引用过,就不需要再次编译了;当这个宏标识符未定义时,表示头文件尚未被引用过,可以继续编译。 总的来说,我们在进行头文件引用时,可以采用以上三种方法中的任意一种来防止头文件重复引用,以确保程序的正常编译和运行。
资源详情
资源推荐
c) 弱指针指向的是一个共享指针,但是不会增加共享指针的引用计数,而且可以
查看对应共享指针的信息;
33. 共享指针的循环引用问题(描述和解决办法)
a) 描述:两个或者多个共享指针相互引用时,此时形成一个闭环的情况,此时引
用计数无法达到 0,导致被引用的资源无法释放,从而导致内存泄漏;(案例
是双向链表,其中的指针类型是共享指针,前面后面互相指向)
b) 解决方法:将共享引用改为弱引用,从而可以使引用计数不会增加;
34. 介绍一下智能指针
答: 多个共享指针可以指向同一个对象,使用引用计数进行管理。
35. Shared_ptr 怎么析构的
a) 当指向同一个对象的最后一个共享指针被销毁时,会自动销毁此对象。共享指
针的析构函数会递减它所指向的对象的引用计数,如果引用计数变为 0,则共
享指针的析构函数会自动销毁该对象。内部的引用计数是线程安全的,但是对
象的读取需要锁;
b) 缺点:会发生循环引用,导致内存无法正确释放和内存泄漏,可以使用 weak_ptr
来解决问题
c) 多线程保证引用计数的安全:引用计数这个变量是 std::atomic,操作数时候自
带锁
36. Unique_ptr 实现原理
是独占指针,不同的独占指针不能指向同一个对象,不允许拷贝构造和拷贝赋
值函数,如何实现:把拷贝构造函数拷贝赋值函数设为 delete,保证了独占性
37. Weak_ptr 如何实现的?
a) 弱指针指向一个共享指针指向的对象,将一个弱指针绑定到一个共享指针不会
改变共享指针的引用计数,用于获取共享对象的引用计数信息;
38. 堆排序
答:先建立小根堆(从 length/2 开始,即从第一个非叶子结点开始往前),然
后每次取出第一数并把最后一个数放上去,重新进行小根堆的调整,适合很多数据
取钱 K 个
39. C++的锁有哪些
a) 读写锁:读不互斥,写操作互斥,写优先
b) 互斥锁:
i. 用于实现对共享资源的互斥访问,同一时间只能有一个线程获取锁并访问
资源;
ii. 一个线程获得互斥锁之后,其他线程需要等待锁释放才能继续执行;
c) 条件变量:
i. 用于线程之间的条件同步,与互斥锁一起使用,线程在条件未满足时阻塞,
并在条件满足时被唤醒;
d) 自旋锁:
i. 自旋锁是一种忙等待锁机制,线程在获取锁时不会阻塞,而是不断循环尝
试获取锁;当锁被其他线程持有时,线程会一直处于忙等待状态,直到锁
被释放;
ii. 适用于临界区保护,以及短时间的争用情况,避免线程切换的开销。
40. 拷贝构造函数为什么是按引用传值
a) 如果是按值传值会执行拷贝构造函数,会造成递归调用
剩余20页未读,继续阅读
weixin_49161192
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 利用迪杰斯特拉算法的全国交通咨询系统设计与实现
- 全国交通咨询系统C++实现源码解析
- DFT与FFT应用:信号频谱分析实验
- MATLAB图论算法实现:最小费用最大流
- MATLAB常用命令完全指南
- 共创智慧灯杆数据运营公司——抢占5G市场
- 中山农情统计分析系统项目实施与管理策略
- XX省中小学智慧校园建设实施方案
- 中山农情统计分析系统项目实施方案
- MATLAB函数详解:从Text到Size的实用指南
- 考虑速度与加速度限制的工业机器人轨迹规划与实时补偿算法
- Matlab进行统计回归分析:从单因素到双因素方差分析
- 智慧灯杆数据运营公司策划书:抢占5G市场,打造智慧城市新载体
- Photoshop基础与色彩知识:信息时代的PS认证考试全攻略
- Photoshop技能测试:核心概念与操作
- Photoshop试题与答案详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功