如果你写过 C,或者从 Python、Java 转过弯来想碰 C++,大概都遇到过同一类尴尬:语法看得懂,一到指针、引用、内存管理就开始靠猜;能跑通 Hello World,却说不清一个 .cpp 文件从敲完到生成可执行程序之间究竟发生了什么。这套 2023 版的 C++ 教程,解决的正是这种「半会半不会」的状态——它不是给零基础的人一条龙喂到底,更接近一份可以按缺口查、按章节补的对照表。

先确认你缺的是哪一块

C++ 的坑分布很不均匀,与其从头再看一遍,不如先给自己做个判断:

  • 环境这一层——Visual Studio 装完就报错,编译和链接分不清,头文件和源文件的关系靠复制粘贴维持;
  • 语法这一层——能写循环和函数,但指针、引用、const、作用域这几样一直没真正弄明白;
  • 进阶这一层——类写得出,但构造函数、拷贝、运算符重载、继承多态之间的取舍说不清楚;
  • 工程这一层——模板、STL 容器、异常处理用过,却不知道什么时候该用、代价是什么。

这四层对应的是完全不同的补课方式。前两层适合按顺序过一遍,后两层更适合带着具体问题跳着看。

这门课把「基础」摊得比较细

它的开头没有急着写代码,而是从 C 与 C++ 的关系、语言特点、适用场景讲起,再落到开发环境安装、第一个程序的编译运行过程。这部分看起来啰嗦,但对自学者其实很关键:很多人的第一个卡点不是语法,而是「我这段代码为什么跑不起来」。把编译、链接、标准这几件事先理清,后面调试会省不少力气。

基础语法部分走的是变量、数据类型、运算符、流程控制、数组、函数这条主线,节奏偏稳。指针和引用、内存分布、动态分配这些通常会劝退初学者的内容,占的比重不小,值得认真对待——这是 C++ 和大多数语言真正拉开差距的地方。

面向对象到泛型,是分水岭

从类和对象开始,课程进入大多数人「学过但没学会」的区间:封装、构造与析构、拷贝构造、赋值运算符、继承、多态、虚函数。这块建议配着练习看,光看不写基本白搭。往后的模板、STL 容器与算法、文件操作、异常处理,是把它推到能写实际代码的关键,也是查漏补缺时最常被跳过的部分。

看完应该能回答这几个问题

  • 一个 C++ 源文件从编辑到运行,中间经历了哪些步骤,报错分别出在哪一步?
  • 指针和引用在什么场景下互换会出问题?动态内存分配后忘记释放会怎样?
  • 拷贝构造和赋值运算符为什么常常要一起写?不写会有什么后果?
  • 虚函数表大概是怎么支撑多态的?为什么基类析构函数常要声明为虚函数?
  • STL 里 vector 和 list 各适合什么操作,选择时你依据的是什么?

如果这些问题你能顺畅答出大半,这套内容对你来说就是复习;如果卡住两个以上,那卡住的地方,就是该补的地方。别假装什么都会,先动手写几段,再回来看对应章节。

尚硅谷2023版C++教程

从基础到进阶,系统学习C++编程

编辑点评

系统化学习C++,从基础语法到高级应用,适合编程初学者和进阶者。

⭐ 编辑推荐

尚硅谷2023版C++教程,全面覆盖C++编程知识,助你掌握C++编程技能。

课程亮点

• 系统化学习C++
• 从基础到进阶
• 适合编程初学者和进阶者

课程目录

├──视频
| ├──001_C视频简介.mp4 266.83M
| ├──002_C的起源.mp4 12.95M
| ├──003_C++的特点和应用领域.mp4 8.83M
| ├──004_CPP代码运行和标准.mp4 9.90M
| ├──005_开发环境(Visual Studio)安装.mp4 14.04M
| ├──006_简单上手_HelloWorld.mp4 30.67M
| ├──007_简单上手_程序的编译运行.mp4 26.34M
| ├──008_简单上手_初步认识函数.mp4 24.64M
| ├──009_变量.mp4 33.95M
| ├──010_标识符和作用域.mp4 34.90M
| ├──011_常量.mp4 17.84M
| ├──012_基本数据类型_整型.mp4 39.01M
| ├──013_基本数据类型_无符号整型.mp4 33.33M
| ├──014_基本数据类型_字符类型.mp4 30.35M
| ├──015_基本数据类型_布尔类型.mp4 12.25M
| ├──016_基本数据类型_浮点类型.mp4 9.09M
| ├──017_基本数据类型_字面值常量.mp4 43.60M
| ├──018_基本数据类型_赋值时的类型转换.mp4 39.85M
| ├──019_运算符_优先级和结合律.mp4 18.68M
| ├──020_运算符_算术运算符.mp4 42.64M
| ├──021_运算符_赋值运算符.mp4 22.70M
| ├──022_运算符_复合赋值和递增递减运算符.mp4 36.24M
| ├──023_运算符_关系运算符.mp4 16.06M
| ├──024_运算符_逻辑运算符.mp4 23.04M
| ├──025_运算符_条件运算符.mp4 12.18M
| ├──026_运算符_位运算符_移位运算符.mp4 49.03M
| ├──027_运算符_位运算符_位逻辑运算符.mp4 29.71M
| ├──028_运算符_运算中的类型转换_隐式类型转换.mp4 36.66M
| ├──029_运算符_运算中的类型转换_强制类型转换.mp4 21.73M
| ├──030_语句的基本概念.mp4 24.26M
| ├──031_流程控制语句_条件分支_if_单分支和双分支.mp4 34.24M
| ├──032_流程控制语句_条件分支_if_嵌套分支.mp4 26.71M
| ├──033_流程控制语句_条件分支_switch.mp4 27.47M
| ├──034_流程控制语句_循环_while和do while.mp4 30.60M
| ├──035_流程控制语句_循环_for.mp4 27.88M
| ├──036_流程控制语句_嵌套循环_案例_九九乘法表.mp4 30.04M
| ├──037_流程控制语句_跳转_break.mp4 13.88M
| ├──038_流程控制语句_跳转_continue.mp4 23.53M
| ├──039_流程控制语句_跳转_goto和return.mp4 20.78M
| ├──040_调试代码(Debug).mp4 28.45M
| ├──041_应用案例_判断质数.mp4 36.33M
| ├──042_应用案例_猜数字.mp4 30.99M
| ├──043_应用案例_爱心曲线.mp4 42.89M
| ├──044_复合数据类型_数组_定义和初始化.mp4 41.13M
| ├──045_复合数据类型_数组_访问和遍历.mp4 49.24M
| ├──046_复合数据类型_多维数组_初始化.mp4 28.79M
| ├──047_复合数据类型_多维数组_访问和遍历.mp4 38.47M
| ├──048_复合数据类型_数组简单排序_选择排序.mp4 28.79M
| ├──049_复合数据类型_数组简单排序_冒泡排序.mp4 17.74M
| ├──050_复合数据类型_模板类vector.mp4 56.42M
| ├──051_复合数据类型_字符串string.mp4 61.51M
| ├──052_复合数据类型_字符数组(C语言风格字符串).mp4 24.49M
| ├──053_复合数据类型_读取键盘输入.mp4 40.99M
| ├──054_复合数据类型_简单读写文件.mp4 27.08M
| ├──055_复合数据类型_结构体_声明和初始化.mp4 24.68M
| ├──056_复合数据类型_结构体_数据的访问和结构体数组.mp4 38.78M
| ├──057_复合数据类型_枚举.mp4 27.84M
| ├──058_复合数据类型_指针_定义和原理.mp4 33.91M
| ├──059_复合数据类型_指针_基本用法.mp4 38.14M
| ├──060_复合数据类型_指针_野指针、空指针和void指针.mp4 31.73M
| ├──061_复合数据类型_指针_指向指针的指针.mp4 14.32M
| ├──062_复合数据类型_指针_指向常量的指针和指针常量.mp4 27.32M
| ├──063_复合数据类型_指针_指针运算和数组.mp4 31.63M
| ├──064_复合数据类型_指针_指针数组和数组指针.mp4 31.16M
| ├──065_复合数据类型_引用_定义和基本用法.mp4 38.80M
| ├──066_复合数据类型_引用_常量引用.mp4 20.21M
| ├──067_复合数据类型_引用_指针和引用.mp4 34.43M
| ├──068_复合数据类型_应用案例_翻转数组.mp4 31.50M
| ├──069_复合数据类型_应用案例_检验幻方.mp4 56.98M
| ├──070_复合数据类型_应用案例_大整数相加.mp4 50.00M
| ├──071_复合数据类型_应用案例_旋转图像.mp4 30.46M
| ├──072_复合数据类型_应用案例_翻转链表.mp4 59.45M
| ├──073_函数_定义和基本用法.mp4 39.45M
| ├──074_函数_案例练习.mp4 25.32M
| ├──075_函数_生命周期和静态对象.mp4 53.20M
| ├──076_函数_函数的声明.mp4 13.52M
| ├──077_函数_分离式编译和头文件.mp4 28.41M
| ├──078_函数_参数传递_传值参数.mp4 29.34M
| ├──079_函数_参数传递_传引用参数.mp4 32.17M
| ├──080_函数_参数传递_数组形参.mp4 44.02M
| ├──081_函数_返回类型_无返回值.mp4 27.45M
| ├──082_函数_返回类型_有返回值.mp4 49.34M
| ├──083_函数_返回类型_返回数组指针.mp4 30.09M
| ├──084_函数_递归_原理和实现.mp4 32.46M
| ├──085_函数_递归_斐波那契数列.mp4 12.19M
| ├──086_应用案例_二分查找.mp4 44.90M
| ├──087_应用案例_快速排序.mp4 78.50M
| ├──088_应用案例_遍历二叉树.mp4 74.58M
| ├──089_函数高阶_内联函数.mp4 13.54M
| ├──090_函数高阶_默认实参.mp4 34.87M
| ├──091_函数高阶_函数重载_基本概念.mp4 11.31M
| ├──092_函数高阶_函数重载_const和重载.mp4 65.94M
| ├──093_函数高阶_函数重载_函数匹配.mp4 30.98M
| ├──094_函数高阶_函数重载_重载和作用域.mp4 17.76M
| ├──095_函数高阶_函数指针_定义和用法.mp4 31.25M
| ├──096_函数高阶_函数指针_函数指针作为形参.mp4 29.13M
| ├──097_函数高阶_函数指针_函数指针作为返回值.mp4 12.83M
| ├──098_小谷记账簿项目_需求分析和流程设计.mp4 33.69M
| ├──099_小谷记账簿项目_模块设计和框架搭建.mp4 35.43M
| ├──100_小谷记账簿项目_定义头文件和实现主体流程.mp4 59.11M
| ├──101_小谷记账簿项目_绘制菜单.mp4 17.31M
| ├──102_小谷记账簿项目_从文件加载数据.mp4 31.87M
| ├──103_小谷记账簿项目_输入的合法性校验.mp4 46.40M
| ├──104_小谷记账簿项目_记账功能实现.mp4 83.73M
| └──105_小谷记账簿项目_查询功能实现.mp4 53.41M
├──笔记.zip 2.43M
├──代码.zip 35.34kb
└──课件.zip 795.97kb

适合人群

  • 编程初学者
  • C++编程爱好者
  • 希望进阶的程序员

学习收获

掌握C++基础语法
理解C++高级特性
具备独立开发C++程序的能力

祝您学习愉快!

学有所成,前程似锦!