【C++ 面试 - 基础题】每日 3 题(六)

✍个人博客:Pandaconda-CSDN博客

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

16. C/C++ 中的链接属性

  1. 外部链接 (External Linkage)

    外部链接的符号可以在不同的源文件之间共享,并且在整个程序执行期间可见。全局变量和函数都具有外部链接。

  2. 内部链接 (Internal Linkage)

    内部链接的符号只能在当前源文件内部使用,不能被其他源文件访问。用 static 修饰的全局变量和函数具有内部链接。

  3. 无链接 (No Linkage)

    无链接的符号只能在当前代码块 (函数或代码块) 内部使用,不能被其他函数或代码块访问。用 const 或 constexpr 修饰的常量具有无链接属性 (通常情况下编译器是不会为 const 对象分配内存,也就无法链接)。

  4. 外部 C 链接 (External C Linkage)

    外部 C 链接的符号与外部链接类似,可以在不同的源文件之间共享,并且在整个程序执行期间可见。

    它们具有 C 语言的名称和调用约定,可以与 C 语言编写的代码进行交互在 C++ 中,可以用 extern "C" 关键字来指定外部 C 链接,从而使用一些 C 的静态库。

这些链接属性可以通过关键字 extern 、static、const 和 extern "C" 来显式地指定。

在实际的开发中,正确地理解和处理链接属性对于编写可重用、高效、可维护的代码非常重要。

17. C ++ 异常如何使用?

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的 直接或间接的调用者处理这个错误。

  • throw:当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。

  • catch:在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常,可以有多个catch进行捕获。

  • try:try 块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个 catch 块。

18. C+ + 异常安全问题

  • 构造函数完成对象的构造和初始化,最好不要在构造函数中抛出异常,否则可能导致对象不完整或没有完全初始化。

  • 析构函数主要完成资源的清理,最好不要在析构函数内抛出异常,否则可能导致资源泄漏。

  • C++ 中异常经常会导致资源泄漏的问题,比如在 new 和 delete 中抛出了异常,导致内存泄漏,在 lock 和 unlock 之间抛出了异常导致死锁,通常通过智能指针来解决。

相关推荐
代码游侠3 分钟前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
程序员侠客行9 分钟前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
devmoon12 分钟前
运行时(Runtime)是什么?为什么 Polkadot 的 Runtime 可以被“像搭积木一样”定制
开发语言·区块链·智能合约·polkadot·runtmie
时艰.13 分钟前
Java 并发编程 — 并发容器 + CPU 缓存 + Disruptor
java·开发语言·缓存
Honmaple14 分钟前
QMD (Quarto Markdown) 搭建与使用指南
后端
忆~遂愿26 分钟前
GE 引擎进阶:依赖图的原子性管理与异构算子协作调度
java·开发语言·人工智能
沐知全栈开发31 分钟前
API 类别 - 交互
开发语言
MZ_ZXD00131 分钟前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
PP东33 分钟前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
invicinble43 分钟前
springboot的核心实现机制原理
java·spring boot·后端