第一章:预备知识 | C++ Primer Plus 重点带看

C++ 概念

C++ 是在 C 语言基础上开发的一种集面向对象编程泛型编程过程化编程于一体的编程语言。

严格来说,C++ 是 C 语言的超集,绝大多数合法的 C 代码都可以直接在 C++ 中编译运行,但并非所有 C 程序都天然是合法 C++ 程序(C 与 C++ 存在少量语法和语义差异)。

过程化编程 vs 面向对象编程(Object-Oriented Programming,OOP)

  • 过程化编程:以算法 / 流程为中心,关注“如何一步步完成任务”。
  • OOP :以数据为中心,将数据与操作数据的方法绑定在一起,设计与现实问题匹配的数据结构与行为。。

对象与类

  • :是一种自定义的数据格式,规定了对象包含的数据(成员变量)和可执行的操作(成员函数),相当于 “图纸 / 模板”。
  • 对象:是根据类创建出来的具体实例,是实实在在的数据结构与实体。
  • 程序 = 数据 + 算法

    任何计算机程序本质都由两部分构成:

    • 数据:程序处理、存储的信息。
    • 算法:处理数据的逻辑、步骤与方法。

    泛型编程

    泛型编程的核心是编写与具体数据类型无关的通用代码

    目的是只需定义一次函数或类,就能适用于多种不同类型,大幅减少重复代码,提高复用性。

    C++ 源文件扩展名

    C++ 源代码文件没有统一强制后缀,不同编译器 / 系统有各自常用的约定。

    日常开发主流后缀

    • Linux / macOS:.cc、.cpp
    • Windows:.cpp

    C++实现

    源代码文件的扩展名

    UNIX

    .C、.cc、.cxx、.c

    GNU C++

    .C、.cc、.cxx、.cpp、.c++

    Digital Mars

    .cpp、.cxx

    Borland C++

    .cpp

    Watcom

    .cpp

    Microsoft Visual C++

    .cpp、.cxx、.cc

    Freestyle CodeWarrior

    .cp、.cpp、.cc、.cxx、.c++

    C++ 实现与工具

    Linux 常用编译器:g++。

    g++ 是 GNU 项目提供的自由开源 C++ 编译器,属于 GCC 套件,是 Linux 下目前主流的 C++ 编译工具。

    库(Library)

    库是预编译好的功能模块集合,包含函数、类、变量等实现,程序可以直接调用库中的功能,无需重复开发底层逻辑。

    在 C++ 中,根据链接方式与加载时机,库主要分为两大类:

    1. 静态库(Static Library):编译时打包,运行时独立

    • Windows 后缀:.lib
    • Linux/macOS 后缀:.a(archive)
    • 特点:编译链接时,把库的代码直接复制、嵌入到可执行文件中运行时不再依赖外部库文件,可独立运行。优点:部署简单,不依赖环境。缺点:可执行文件体积大,多个程序共用时会重复占用内存

    2. 动态库(Dynamic Library / 共享库):编译时留坑,运行时加载

    • Windows 后缀:.dll
    • Linux/macOS 后缀:,so(shared object)
    • 特点:编译时只记录引用关系,不复制代码程序运行时才从系统中加载动态库。多个程序可共享同一份库,节省内存与磁盘空间。优点:体积小、便于更新(替换库文件即可升级);缺点:部署时必须保证动态库存在,否则无法运行。
    C++ Primer Plus 文章被收录于专栏

    C++ Primer Plus 精读|从入门到面试,重点内容全程带看。 本专栏以《C++ Primer Plus》为蓝本,逐章提炼必考知识点、易错点、面试高频考点,跳过冗余示例,直击语法本质与工程实践,帮你高效吃透 C++ 基础,夯实底层开发必备能力。

    全部评论
    欢迎订阅专栏《C++/嵌入式开发 秋招面经》:https://www.nowcoder.com/creation/manager/columnDetail/MKaoll
    点赞 回复 分享
    发布于 昨天 23:01 河北

    相关推荐

    评论
    1
    收藏
    分享

    创作者周榜

    更多
    正在热议
    更多
    牛客网
    牛客网在线编程
    牛客网题解
    牛客企业服务