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

相关推荐
初恋叫萱萱40 分钟前
构建高性能生成式AI应用:基于Rust Axum与蓝耘DeepSeek-V3.2大模型服务的全栈开发实战
开发语言·人工智能·rust
cyforkk2 小时前
12、Java 基础硬核复习:集合框架(数据容器)的核心逻辑与面试考点
java·开发语言·面试
我材不敲代码6 小时前
Python实现打包贪吃蛇游戏
开发语言·python·游戏
身如柳絮随风扬7 小时前
Java中的CAS机制详解
java·开发语言
-dzk-8 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
韩立学长8 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
froginwe118 小时前
Scala 循环
开发语言
m0_706653239 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你919 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Bruk.Liu9 小时前
(LangChain实战2):LangChain消息(message)的使用
开发语言·langchain