第一章:面向对象程序设计与C++——从C语言到C++的第一课
翻开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++语言的特点
教材里列了很多特点,我挑几个和我们学习最相关的:
- 兼容C语言:你写的C代码基本上可以直接在C++编译器下运行
- 支持面向对象:支持类、继承、多态等,这是C语言没有的
- 支持泛型编程(模板):写一份代码可以适配多种数据类型(后面会学到)
- 运算符丰富:支持运算符重载,可以让自定义类型用起来像内置类型
- 类型安全:比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章的事情。
现在你需要做的就三件事:
- 装好开发环境(Visual Studio、Code::Blocks或g++),确保能编译运行程序
- 亲手敲一遍Hello World,感受一下C++和C的区别
- 把 cout 和 cin 的基本语法用熟——这是第二章写练习题的基础
第二章就要正式学习C++的数据类型、运算符和控制结构了,代码量会大幅增加,那才是"真正的开始"。
从C到C++,你在升级。加油!🚀
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)