【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 分钟前
【AI全栈后端12-04】Spring Boot 用结构化输出自动解析简历:让模型按你的 POJO 输出
java·人工智能·spring boot·后端
阿里嘎多学长8 分钟前
2026-09-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
我的xiaodoujiao1 小时前
Django 基础知识详细图文教程 12-Django 模型定义与使用 2
后端·python·django
孙启超2 小时前
【AI开发之Rust】第 22 课:一键多平台与工程收尾 —— CI、发布检查与结课
开发语言·后端·rust
一条小小yu9 小时前
Spring IoC的理解
java·后端·spring
朔北之忘 Clancy9 小时前
2025 CSP-J 第二轮真题解析
c++·青少年编程·题解·noip·csp·信奥赛·noi
longlongzihan9 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
落魄实习生9 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
yolo_guo9 小时前
调试mysql延迟与libevent回调实际发送回复时机问题
c++·mysql·libevent
茉莉玫瑰花茶10 小时前
GO [ 方法 ]
开发语言·后端·golang