【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 之间抛出了异常导致死锁,通常通过智能指针来解决。

相关推荐
D_evil__12 小时前
【Effective Modern C++】第二章 auto:6. 当auto推导的类型不符合要求时,使用显式类型初始化习惯用法
c++
努力学算法的蒟蒻12 小时前
day61(1.20)——leetcode面试经典150
面试·职场和发展
夏鹏今天学习了吗12 小时前
【LeetCode热题100(87/100)】最小路径和
算法·leetcode·职场和发展
哈哈不让取名字13 小时前
基于C++的爬虫框架
开发语言·c++·算法
花间相见13 小时前
【JAVA开发】—— Nginx服务器
java·开发语言·nginx
扶苏-su13 小时前
Java---Properties 类
java·开发语言
橙子家14 小时前
WebAPI 项目通过 CI/CD 自动化部署到 Linux 服务器(docker-compose)
后端
一条咸鱼_SaltyFish14 小时前
远程鉴权中心设计:HTTP 与 gRPC 的技术决策与实践
开发语言·网络·网络协议·程序人生·http·开源软件·个人开发
我即将远走丶或许也能高飞15 小时前
vuex 和 pinia 的学习使用
开发语言·前端·javascript
沐知全栈开发15 小时前
SQL LEN() 函数详解
开发语言