跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

C++ 基础知识点系统梳理:语法、面向对象与 STL

系统梳理 C++ 基础知识点,涵盖开发环境配置、核心语法(数据类型、变量、运算符)、控制流(分支、循环)、函数定义与重载、数组字符串、指针引用、面向对象(类、封装、继承、多态)及 STL 入门。重点强调内存管理、初始化规范及常见避坑指南,适合初学者构建知识体系。

星星泡饭发布于 2026/3/27更新于 2026/10/17110 浏览

一、开发环境

  • 编译器GCC(Linux/macOS)、Clang(macOS)、MSVC(Windows,Visual Studio 内置)
  • IDE(推荐)
    • 新手入门:Dev-C++(轻量)、Code::Blocks(跨平台)
    • 进阶 / 项目开发:Visual Studio(Windows)、CLion(跨平台,需配置编译器)

二、核心语法:数据与运算

1. 基本数据类型

C++ 数据类型分为「内置类型」和「自定义类型」(后续类 / 结构体),内置类型核心如下:

  • 关键字:sizeof(类型/变量) 查看占用字节数,如 sizeof(int) → 4;
  • 注意:浮点型默认是 double,float 需加后缀 f,否则可能精度警告。

2. 变量与常量

变量:可修改的存储单元,必须「先定义 / 初始化,后使用」(避免野值); 常量:不可修改的量,两种定义方式:

3. 运算符

按功能分类,核心注意点如下:

  • 优先级:括号 () 最高,算术 > 关系 > 逻辑 > 赋值(不确定就加括号)。

三、控制流:程序执行逻辑

1. 分支结构

  • if-else:处理多条件判断 switch-case:处理多常量分支(需加 break 避免穿透)

2. 循环结构

  • for 循环:适合已知循环次数 while 循环:适合未知循环次数(先判断后执行) do-while 循环:至少执行一次(先执行后判断)
  • 循环控制:break(跳出当前循环)、continue(跳过本次循环剩余代码)。

四、函数:代码复用与模块化

1. 函数的定义与调用

  • 结构:返回类型 函数名 (参数列表) { 函数体; return 返回值; }
  • 示例:

2. 关键特性

  • 函数声明:声明与定义分离(头文件 .h 声明,源文件 .cpp 定义),解决多文件复用问题: 函数重载:同一作用域下,函数名相同,参数列表(个数 / 类型 / 顺序)不同(返回值不影响): 默认参数:从右往左指定默认值,不可跳过前面参数:

五、数组与字符串:批量数据存储

1. 数组

  • 初始化与访问:注意:数组名是「首元素地址」,作为函数参数时会退化为指针(需手动传递长度): 定义:类型 数组名 [长度];(长度必须是常量,C++11 支持变量长度但不推荐)

2. 字符串

  • 两种方式:
    1. C 风格字符串(字符数组):char str[] = "hello";(末尾隐含 '�' 作为结束标志);
    2. C++ 风格字符串(string 类,推荐):需包含 <string> 头文件,支持直接拼接、长度获取等:

六、指针与引用:内存访问利器

1. 指针

  • 定义:类型* 指针名;(存储变量的内存地址,* 表示指针) 核心操作:

2. 引用

  • 定义:类型& 引用名 = 原变量;(原变量的「别名」,必须初始化,且不能改指向)
  • 示例: 指针 vs 引用:

七、面向对象基础(C++ 核心)

C++ 核心特性是「面向对象」,核心思想是「封装、继承、多态」,基础如下:

1. 类与对象

  • 类:自定义数据类型,包含「成员变量」(属性)和「成员函数」(行为);
  • 对象:类的实例(如 Person 是类,zhangsan 是对象)。
  • 示例:

2. 访问控制

  • public:类外可访问(暴露接口);
  • private:仅类内可访问(隐藏实现,封装核心);
  • protected:类内 + 子类可访问(继承用)。

3. 构造函数与析构函数

  • 构造函数:
    • 无参构造:Person()(若未定义任何构造函数,编译器自动生成默认无参构造);
    • 有参构造:如上面的 Person(string n, int a);
    • 拷贝构造:Person(const Person& p)(用已有对象初始化新对象)。
  • 析构函数:~类名 (),无参数无返回值,对象销毁时自动调用(释放资源,如堆内存):

八、STL 入门:标准模板库(常用工具)

STL 是 C++ 标准库的核心,提供「容器」(存储数据)、「算法」(操作数据)、「迭代器」(遍历容器),新手需掌握以下常用组件:

1. 容器(常用)

  • vector(动态数组):支持随机访问,尾部插入 / 删除高效,需包含 <vector>;
  • string:前面已讲,替代 C 风格字符串。

2. 算法(常用)

需包含 <algorithm> 头文件:

  • sort():排序(默认升序); find():查找(返回迭代器,未找到返回 end())

九、常见注意事项(避坑指南)

  1. 变量初始化:内置类型变量(如 int)未初始化会是随机值(野值),必须初始化;
  2. 数组越界:下标超过 长度 -1 会访问非法内存,导致程序崩溃;
  3. 指针安全:使用指针前先判断是否为 nullptr,避免野指针;
  4. 内存管理:new 分配的堆内存必须用 delete 释放(数组用 delete[]),否则内存泄漏:
  5. 头文件保护:自定义头文件需加保护,避免重复包含:
  6. 命名空间:using namespace std; 虽方便,但可能导致命名冲突,大型项目建议显式写 std::cout

目录

  1. 一、开发环境
  2. 二、核心语法:数据与运算
  3. 1. 基本数据类型
  4. 2. 变量与常量
  5. 3. 运算符
  6. 三、控制流:程序执行逻辑
  7. 1. 分支结构
  8. 2. 循环结构
  9. 四、函数:代码复用与模块化
  10. 1. 函数的定义与调用
  11. 2. 关键特性
  12. 五、数组与字符串:批量数据存储
  13. 1. 数组
  14. 2. 字符串
  15. 六、指针与引用:内存访问利器
  16. 1. 指针
  17. 2. 引用
  18. 七、面向对象基础(C++ 核心)
  19. 1. 类与对象
  20. 2. 访问控制
  21. 3. 构造函数与析构函数
  22. 八、STL 入门:标准模板库(常用工具)
  23. 1. 容器(常用)
  24. 2. 算法(常用)
  25. 九、常见注意事项(避坑指南)

更多推荐文章

查看全部
  • Python 实现 SMZDM 数据处理系统:从爬虫到数据分析
  • C++26 CPU 亲和性底层机制与性能优化实践
  • Qwen2 技术报告:模型性能与多语言能力解析
  • AI 产品经理工作全流程详解:从需求定义到模型验收
  • 通义万相 2.1 视频生成模型技术特性与应用场景
  • 读李宁《AIGC 自动化编程》:大模型时代的复杂问题分解与合并
  • hls4ml:FPGA机器学习快速上手指南
  • Java 运算符详解:从基础算术到位运算实战
  • 2025 年 AIGC 六大核心趋势解析
  • Python 未来十年发展趋势与核心优势分析
  • OpenClaw Windows 安装配置教程:Node.js 22、Kimi 模型与飞书机器人集成
  • Spring Boot 集成数据仓库与 ETL 工具实战
  • 飞书机器人与Claude Code交互:从手机指令到AI处理的全自动流程
  • Jetpack Activity Results API 详解与源码分析
  • Fish-Speech 1.5 语音合成 WebUI 搭建与使用指南
  • Sam Altman 深度访谈:GPT-5、Sora 与 Q 项目展望及 AGI 发展路径
  • 大模型技术入门:概念、发展历程与核心特点
  • Vercel find-skills:为 AI 编辑器安装专家级技能驱动
  • OpenRouter 快速入门:统一接口调用 500+AI 模型
  • 基于宝塔面板与 Nginx 部署智能协同云图库项目实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online