翻开C++教材的第一章,你可能会觉得"怎么全是概念?"别急,这篇博客帮你理清哪些是重点、哪些可以先放一放。

如果你和我一样,上学期刚学完C语言上册,这学期第一次翻开C++教材,看到第一章目录时大概会是这种心情:

“面向对象的基本概念?基本特征?C++语言的产生?C++程序开发过程?……怎么全是文字?代码在哪?”

别着急。第一章的特点是"概念先行"——它要在一开始就告诉你C++这门语言"为什么存在"和"它想解决什么问题",而不是急着教你怎么写代码。这和我们上学期学C语言时第一章就上 printf 的节奏很不一样。

这篇文章会帮你梳理第一章的脉络,告诉你哪些是必须理解的、哪些可以先有个印象,让你顺利过渡到第二章(开始真正写代码)。

一、1.1 面向对象程序设计——这一节在讲什么?

这是第一章最"抽象"的部分,也是很多同学觉得"读不下去"的地方。但如果换个角度理解,其实并不难。

1.1.1 面向对象的基本概念

面向对象里有几个核心概念,教材里会用比较正式的语言定义。我用"人话"翻译一下:

概念 教材里的说法 我的理解
对象 系统中用来描述客观事物的一个实体 就是"某个具体的东西"。比如"小明"是一个对象,“我这本书"也是一个对象
类 具有相同属性和操作的一组对象的集合 就是"设计图"或"模板”。比如"学生"是一个类,“小明"是这个类的一个具体对象
属性 对象的静态特征 就是这个对象"有什么”。比如学生的姓名、年龄、学号
方法/操作 对象的动态行为 就是这个对象"能做什么"。比如学生能"自我介绍"、能"选课"

类和对象的关系,可以用一个例子记住:

"学生"是一个类——它定义了所有学生都有的东西(姓名、年龄、学号、自我介绍)。

“小明"是一个对象——它是根据"学生"这个类造出来的一个具体的人,姓名叫"小明”,年龄19岁,学号2024001。

这和我们上学期学的结构体(struct)有点类似,但类的功能要强大得多——它不仅能"装数据",还能"装函数"。

1.1.2 面向对象的基本特征

教材里会讲四个特征:封装、继承、多态、抽象。这是我们这门课后面三章的核心内容,第一章只需要混个脸熟:

· 封装:把数据和操作数据的方法打包在一起,不让外部随意访问内部数据(就像手机把内部电路封装起来,你只需要用屏幕和按钮)
· 继承:一个类可以"继承"另一个类的属性和方法,实现代码复用(就像你继承了父母的某些特征)
· 多态:同一个操作作用于不同的对象,可以有不同的解释和执行结果(就像"播放"按钮在音乐播放器和视频播放器上效果不同)
· 抽象:只关注对象的核心特征,忽略非本质的细节

现在能记住概念最好,记不住也没关系——第5、6、7章会通过大量代码让你真正理解这些特征。第一章的目标只是"混个眼熟"。

1.1.3 & 1.1.4 面向对象的程序设计与软件开发

这两小节讲的是"如何用面向对象的思想来开发软件",包括开发流程、建模方法等。了解即可,不会在考试中占据大量分值,也不会影响你后续写代码。

二、1.2 C++语言程序设计——C++从哪来,好在哪

1.2.1 C++语言的产生

这部分讲C++的历史:C++是从C语言发展而来的,由Bjarne Stroustrup在20世纪80年代创建。他最初的目标是在C语言的基础上增加面向对象特性,所以早期的C++被称为"C with Classes"(带类的C)。

为什么要在C语言基础上"增加"而不是"重写"?

因为C语言已经非常成功了(操作系统、嵌入式系统大量使用),如果完全重新发明一门语言,没人会用。C++的策略是兼容C语言——现有的C代码可以无缝迁移到C++,然后逐步引入面向对象特性。

这也是为什么我们学完C语言再学C++是合理的学习路径——C++的底层语法和C语言高度一致,你不会完全从零开始。

1.2.2 C++语言的特点

教材里列了很多特点,我挑几个和我们学习最相关的:

  1. 兼容C语言:你写的C代码基本上可以直接在C++编译器下运行
  2. 支持面向对象:支持类、继承、多态等,这是C语言没有的
  3. 支持泛型编程(模板):写一份代码可以适配多种数据类型(后面会学到)
  4. 运算符丰富:支持运算符重载,可以让自定义类型用起来像内置类型
  5. 类型安全:比C语言更严格的类型检查,减少错误

1.2.3 & 1.2.4 C++的发展与应用

这两小节了解一下即可。知道C++仍在不断发展(C++11、C++14、C++17、C++20、C++23是不同版本的标准),以及C++主要应用在游戏开发、操作系统、数据库、金融系统、嵌入式系统等对性能要求较高的领域。

三、1.3 C++程序开发过程

这一节讲从"写代码"到"程序运行"经历了哪些步骤,和C语言的开发过程几乎完全一样:

编辑(写.cpp文件)→ 编译(生成.obj/.o文件)→ 链接(生成.exe文件)→ 运行

编译:把源代码(人类可读的文本)翻译成机器指令(目标文件)。C++的编译器(如g++、cl.exe)和C语言的编译器往往是同一套工具链,只是编译模式不同。

链接:把多个目标文件合并成一个可执行文件,同时把函数调用和库代码"连接"起来——比如你调用了 cout,链接器会把C++标准库的相应代码嵌入到你的程序中。

和上学期的区别:编译器不同——C语言用gcc或cl,C++用g++或cl(微软编译器),但开发流程的思维完全一样。

四、1.4 C++程序实例——从第一个程序开始

终于到代码了!这是第一章唯一要求你能动手写的部分。

1.4.1 简单的C++程序

先看一个最简单的C++程序,对比一下C语言有什么不同:

// C++版本的Hello World
#include <iostream>      // 注意:不是 .h 结尾
using namespace std;     // 这是什么?先别急

int main() {
    cout << "Hello World!" << endl;   // cout 代替了 printf
    return 0;
}

对比C语言版本:

// C语言版本的Hello World
#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

主要区别:

· 头文件从 <stdio.h> 变成了 (没有 .h)
· 输出从 printf 变成了 cout << …
· 换行从 \n 变成了 endl(也可以继续用 \n)
· 多了一行 using namespace std;

好消息是:C语言中的 printf、scanf 在C++中依然可用(只要包含 或 <stdio.h>)。但为了适应C++的风格,教材和考试都会要求你逐步过渡到 cout 和 cin。

1.4.2 使用名字空间——这行代码是干嘛的?

using namespace std; 是很多初学者第一个"不理解但先照抄"的东西。

简单来说:C++标准库里的所有东西(cout、cin、endl、string等)都被放在一个叫 std 的"盒子"(名字空间)里。using namespace std; 的作用是打开这个盒子,让你可以直接写 cout 而不是 std::cout。

如果不写这行,代码就要写成这样:

#include <iostream>

int main() {
    std::cout << "Hello World!" << std::endl;   // 每次都要加 std::
    return 0;
}

两种写法都正确。教材为了方便初学者,使用 using namespace std;。但在大型项目中,更推荐使用 std:: 前缀,以避免命名冲突。

现在你只需要知道:这就是个"方便写法",具体细节第4章会详细讲。

1.4.3 输入/输出简介

C++的输入输出和C语言最大的区别是不需要格式控制符:

操作 C语言 C++
输出字符串 printf(“Hello”) cout << “Hello”
输出变量 printf(“%d”, age) cout << age
输入变量 scanf(“%d”, &age) cin >> age

C++的 cout 和 cin 能自动识别数据类型——你不用操心 %d、%s、%f 的写法,编译器会自动处理。这对新手更友好,也减少了格式错误导致的程序崩溃。

五、本章小结与习题1

本章核心任务

第一章的内容可以分为三个层次:

层次 内容 要求
必须掌握 cout、cin 的基本用法;C++程序的基本框架 能写出Hello World
需要理解 面向对象的基本概念(类、对象、封装、继承、多态) 能用自己的话说出大概意思
了解即可 C++的历史、发展、应用领域、开发流程 阅读一遍,不用背

课后习题建议

习题1通常包括选择题、简答题和一道编程题。

· 选择题和简答题:主要考察面向对象的基本概念。如果你觉得记不住,可以先把答案找到并理解,不需要逐字背诵——后续章节会通过实际代码让这些概念"活"起来。
· 编程题:一般是写一个简单的C++程序,输出 “Hello World” 或类似内容。这道题一定要自己敲一遍,确保你的开发环境(编译器、IDE)能正常工作。这是整个学期实验课的基础。

写在最后:第一章是"导航图",不是"施工图"

回想上学期学C语言的第一章,我们很快就上手写代码了。但C++的第一章看起来"干货少、概念多",容易让人产生"学了一周好像什么都没学到"的感觉。

这是正常的,不用慌。

第一章的角色更像是一张导航图——它告诉你整个学期要学什么(面向对象、C++语法、程序结构),让你心里有个大框架。具体怎么"施工",是第2章到第7章的事情。

现在你需要做的就三件事:

  1. 装好开发环境(Visual Studio、Code::Blocks或g++),确保能编译运行程序
  2. 亲手敲一遍Hello World,感受一下C++和C的区别
  3. 把 cout 和 cin 的基本语法用熟——这是第二章写练习题的基础

第二章就要正式学习C++的数据类型、运算符和控制结构了,代码量会大幅增加,那才是"真正的开始"。

从C到C++,你在升级。加油!🚀

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐