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

相关推荐
ulias2121 分钟前
leetcode热题 - 3
c++·算法·leetcode·职场和发展
旷世奇才李先生10 分钟前
Python\+ERNIE实战:字节跳动式AI内容审核完整实现(附源码)
开发语言·人工智能·python
大彼方..13 分钟前
深入学习cpp初阶模板
开发语言·c++·学习
老四啊laosi24 分钟前
[C++进阶] 25. C++11新特性(一)
c++·c++11·右值
yoyo_zzm26 分钟前
SpringBoot Test详解
spring boot·后端·log4j
咸鱼翻身小阿橙34 分钟前
QT-P3
开发语言·qt·计算机视觉
心易行者42 分钟前
代码写好了,然后呢?——手把手教你把Python脚本变成能赚钱的Web应用
开发语言·前端·python
AKA__Zas43 分钟前
初识 事务
java·开发语言·数据库·sql
今儿敲了吗1 小时前
常用UI组件
开发语言