如何学习 C++:初学者完整指南 1. C++ 简史 2. C++ 工具和软件概述 3. C++ 语言和语法简介 C++ 术语和词汇 4. C++ 常见问题解答 5. C++ 初学者资源

2025-06-04

如何学习 C++:初学者完整指南

1. C++简史

2. C++工具和软件概述

3. C++语言和语法简介

C++术语和词汇

4. C++ 常见问题解答

5. C++初学者资源

最初发布于Educative.io

众所周知,C++ 的学习曲线非常陡峭,但花时间学习这门语言将为你的职业生涯带来巨大的进步,并让你从众多开发者中脱颖而出。你将能够更轻松地学习新的语言,培养真正的问题解决能力,并在编程基础方面打下坚实的基础。

C++ 将帮助您养成良好的编程习惯(即清晰一致的编码风格、在编写代码时对其进行注释以及限制类内部对外界的可见性),并且由于几乎没有任何抽象,因此您需要定义几乎每个属性才能使您的代码工作;这将迫使您真正理解您正在做什么以及您的程序将如何影响系统。

想知道为什么我们认为 C++ 是一门值得学习的优秀语言吗?请查看我们的文章《为什么 C++ 是一门优秀的入门语言》

在本文中,我们将带您了解 C++ 初学者的学习路线图,让您在踏上学习之旅时充满信心。如果您想跳过阅读部分,直接动手学习 C++,可以访问这门免费课程“从头开始学习 C++”

以下是我们今天要讨论的内容:

  1. C++简史
  2. C++ 工具和软件概述
  3. C++语言和语法简介
  4. C++ 常见问题解答
  5. 初学者资源

让我们开始吧!

1. C++简史

替代文本

入门 C++ 的一个好方法是了解它的历史。C++ 是最古老的编程语言之一,因此有很多不同的版本。了解这段历史将有助于你融入 C++ 程序员社区,并让你了解它的功能。熟悉编程语言的早期版本总是一个好主意,尤其是在你进入职场之后。

C++ 编程语言由Bjarne Stroustrup于 1979 年在贝尔实验室攻读博士学位期间发明。C++ 的设计初衷是作为 C 语言的扩展,因此其最初名为“带类的 C”。Stroustrup 的目标是为 C 语言增添灵活性和面向对象编程 (OOP)。他添加了类、强类型检查、默认函数参数和基本继承等特性。C++ 于 1983 年更名为 C++,其名称源自++运算符。

替代文本

C++ 于 1985 年发布,用于商业用途,但尚未标准化。1990 年,Borland 的 Turbo C++ 编译器发布,增加了许多新功能。C++ 的第一个国际标准于 1998 年发布,称为 C++98。它包含标准模板库,提供通用的编程函数和数据结构。根据反馈,委员会于 2003 年修订了这些标准,更新后的语言更名为 C++03。

2011年,C++11 完成,该语言又进行了一次修订。此版本包含的功能包括正则表达式支持、新库、新的 for 循环语法、auto关键字以及新的容器类等。此后,又发布了两个修订版本:C++14 和 C++17,这两个版本进行了重大修订。目前,C++20 更新正在进行中。

2. C++工具和软件概述

替代文本

为了正确编写 C++ 程序,您需要熟悉一些工具和软件:文本编辑器、C++ 编译器、链接器和库。

文本编辑器

要编写 C++ 程序,你需要一个文本编辑器。你可以把它想象成一个空白的 Microsoft Word 文档;它是你实际编写代码的地方。任何文本编辑器都可以,甚至有些电脑自带的编辑器也可以,但我们建议使用专为编程设计的文本编辑器。市面上有很多文本编辑器可供选择,但对于 C++ 开发者来说,最常用的一些文本编辑器包括:

  • Notepad++:开放、轻量、简单
  • Atom:免费,支持多种语言,插件有限
  • Sublime Text:80美元,功能独特,布局简单
  • Bluefish:轻量级、快速、多平台、支持多种语言

Notepad++文本编辑器

替代文本

Atom 文本编辑器
替代文本

编译器

编译器会检查您的源代码以完成两项重要任务:首先,检查您的代码是否遵循 C++ 语言规则;其次,将代码转换为目标文件。一些知名的编译器包括 GCC、Clang 和 Visual Studio C++ 编译器。我们不推荐 Turbo C++,因为它有点过时了。

链接器

一旦编译器完成其魔力,目标文件就会被发送到链接程序,该程序完成三个任务:首先,它将所有目标文件组合成一个程序;其次,它将库文件链接到您的程序;第三,它暴露任何跨文件命名或引用问题。

图书馆

库本质上是预先打包好的可复用代码包。C++ 库被称为 C++ 标准库,它几乎与所有 C++ 程序都链接在一起。如果标准库无法满足您的需求,您还可以将其他库添加到您的程序中。对 C++ 标准库感兴趣?点击此处了解更多信息

集成开发环境 (IDE)

许多 C++ 程序员使用 IDE 而不是文本编辑器和编译器。IDE 是 C++ 编程的一站式工具。它包含文本编辑器、链接器、编译器和库。编译器没有优劣之分,一切都取决于您的需求以及最适合您的布局。一些常用的 IDE 包括:

  • Code::Blocks:免费、热门功能、用户插件
  • Visual Studio Code:开源、功能强大、跨平台
  • Eclipse:开源、简单、跨平台,需要安装C++组件
  • Xcode:仅适用于 MacOS,提供实用的 Mac 功能
  • Netbeans:免费、基于项目的模板、跨平台

3. C++语言和语法简介

替代文本

C++ 是一种面向对象的编程语言。这意味着 C++ 程序以对象和类为模型,您可以通过调用函数来控制和操作它们。面向对象编程 (OOP) 语言为程序提供了清晰的结构,并帮助开发人员对实际问题进行建模。

C++ 的设计初衷是赋予你极大的自由和能力,这有好有坏。你可以完全控制系统如何利用资源;它不像 Java 那样有自动内存管理;你可以选择内存分配方式(例如堆栈或堆);C++ 没有解释器来阻止你编写有缺陷的代码。

为了开始学习 C++,你需要熟悉它的语法。这将为你的 C++ 学习之旅奠定基础,并帮助你创建安全、无 bug 的优化程序。

让我们看一些代码。
看看下面的代码,你可能想知道这是什么,以及它意味着什么。欢迎使用 C++ 语法。

什么是语法?语法就像编程语言的语法。它是你用 C++ 编写的所有内容的基础。这些规则定义了你如何编写和理解 C++ 代码。让我们看一些代码示例来熟悉语法。

#include <iostream> //header file library 
using namespace std; //using standard library

int main() { //main function
  cout << "Hello World \n"; // first object
  cout << "Learn C++ \n\n"; //second object with blank line
  cout << "Educative Team"; //third object 
  return 0; //no other output or return
} //end of code to execute
Enter fullscreen mode Exit fullscreen mode

语法解释

#include <iostream>是一个头文件库。头文件会将一些功能导入到你的程序中。我们基本上要求程序从一个名为 的文件中复制内容<iostream>。这代表输入和输出流,它定义了代码中对象的标准。

using namespace std表示我们使用标准库 (std) 中的对象和变量名。此语句通常缩写为关键字std和运算符::int main ( )用于指定主函数。它是 C++ 程序中非常重要的一部分,与您编写的每个 C++ 程序都息息相关。函数本质上定义了代码的操作。花括号内的任何内容都{ }将被执行。

cout是一个对象(发音为 see - out)。在本例中,它定义了我们的输出:字符串。我们cout在第二行使用 写入一个新对象。 字符\n使文本在另一行执行。 包含两个字符\n\n会创建一个空格。 通过写入return 0,我们告诉程序不会返回任何内容。我们只输出文本字符串。请注意,我们使用<<运算符来命名对象。分号的;作用类似于句点。

提示:请在代码中使用 为自己留下注释//。这些破折号后面的任何文本都不会被执行。当你开始与团队合作时,留下注释变得越来越重要。

C++术语和词汇

现在我们已经了解了 C++ 代码的样子,让我们定义一些我们提到的术语并向您介绍更多术语。

关键词

关键字是预先确定的名称,可用于在代码中标识内容。关键字是特定对象、变量或操作的标识符。您也可以创建自己的关键字。以下是一些关键字示例:gotofloatpublicclass(1)int。完整的关键字列表请点击此处查看。

变量

变量就像存储值的容器。要声明变量,必须type使用正确的关键字赋予其值和值。C++ 中的所有变量都需要一个名称,或者说标识符。创建标识符时,需要遵循一些基本的语法规则。

  • 名称区分大小写
  • 名称可以包含字母、数字和下划线
  • 名称必须以字母或下划线开头
  • 名称不能包含空格或特殊字符(!、#、@ 等)
  • 名称不能使用保留关键字

有六种不同类型的变量:

替代文本

数据类型

数据类型是对程序中可以使用的不同类型数据的分类。数据类型告诉变量它们可以存储哪些数据。C++ 中有三种数据类型:

  • 原始数据类型:这些是可用于声明变量的内置数据。它们包括整数、字符、布尔值、浮点数、双精度浮点数、空值和宽字符。

  • 派生数据类型:这些类型源自原始数据类型。它们包括函数、引用、数组和指针。

  • 用户定义数据类型:这些是由您(程序员)定义的。

字符串

字符串是 C++ 中的对象。它们是引号内的一组字符” “,例如我们的“Hello World”字符串。由于它们是对象,我们可以对它们执行函数,例如len ( )确定字符串长度的函数。

运算符

运算符是操作数据并执行运算的符号。在 C++ 中,我们可以重载运算符,使其适用于程序员定义的类。重载运算符基本上意味着一个运算符可以同时拥有多个函数。C++ 语言中有四种类型的运算符:

算术运算符用于数学运算。其工作原理类似于代数符号。

cout << x + y // this adds x to y
Enter fullscreen mode Exit fullscreen mode

赋值运算符用于为变量赋值

int x = 10 // this defines x as 10
Enter fullscreen mode Exit fullscreen mode

比较运算符比较两个值

x <= y // determines x is greater than or equal to y
Enter fullscreen mode Exit fullscreen mode

逻辑运算符确定值之间的逻辑

x < 4 && x < 9 // will return true if both statements are true about x
Enter fullscreen mode Exit fullscreen mode

对象

对象是一组我们可以操作的数据集合。C++ 中的对象拥有属性(特质)和方法(能力)。你可以使用类来构造对象。可以把类想象成对象的蓝图。

使用关键字创建一个类class。您必须定义一个访问说明符,例如publicprivateprotected。 public 关键字表示该类可从类外部访问。定义类后,您就可以定义属性和对象了。以下是类和对象的示例。

#include <iostream>
using namespace std;
class Dog //this is the name of our class
{
public: 
    string name = "rover"; //this is an attribute 
    string gender  = "male"; 
    int age = 5;

};

int main() {
  Dog dogObj; //here we are making an object of Dog class
  cout << "Dog name is: "<<dogObj.name<<endl; //by using . operator we can access the member of class
  cout << "Dog gender is: "<<dogObj.gender<<endl; //accessing the public members of class Dog in main()
  cout << "Dog age is: "<<dogObj.age<<endl;
}
Enter fullscreen mode Exit fullscreen mode

功能

函数是被调用时运行的代码块。它们是程序的核心,用于对代码执行操作和操作。它们对于代码的可重用性至关重要,并有助于更好地模块化代码。可以将它们想象成您发起的操作。在 C++ 中,有一些预先定义的函数,例如main ( )我们最初示例中的 。

要创建一个函数,你必须给它一个名称(称为声明)和括号( )。然后,你可以随时使用那个来调用此函数name ( )

函数的使用方法有很多种。你还可以为函数附加返回值,以决定函数是否输出任何信息。void关键字 表示不返回任何值。return而 则表示需要指定数据类型的输出。

条件语句

这些语句允许你检查某个代码块是否应该执行。C++ 中有四种条件语句:

  • if:当满足特定条件时,将执行特定操作

  • else:如果条件不满足,则会执行某个操作

  • else if:如果第一个条件不满足,则会测试新的条件

  • switch:根据值列表测试变量

循环

循环类似于条件语句。只要满足特定条件,循环就会执行代码块。C++ 中有两种类型的循环:

  • while loops:当条件返回 true 时,此循环将继续遍历您的代码。

  • for loops:当您知道代码中循环的确切次数时使用

现在您已经对 C++ 语法有了基本的了解,让我们来看看一些常见问题和资源,以帮助您开始 C++ 之旅。

4. C++ 常见问题解答

替代文本

学习 C++ 需要多长时间?

这真的取决于“学习”的含义。如果你认真对待这门语言,那么你的学习永无止境。即使开发者将整个职业生涯都奉献给 C++,他们仍然会觉得自己还有很多东西要学。

话虽如此,如果你努力工作,你可以在 1-2 年内学到足够的 C++ 知识,并且仍然成为一名优秀的开发人员。

简而言之,这个问题没有一个正确的答案,它很大程度上取决于你的学习方式、目标、教育计划和先决知识。

C++ 用于什么?

C++ 专注于大型系统性能,因此它广泛应用于各种注重性能的程序和问题。这包括但不限于操作系统、游戏开发、3D 动画、Web 浏览器(Firefox 和 Chrome 浏览器均使用 C++)、办公软件、医疗软件等等。所有暴雪游戏、大多数主机游戏、Adobe Photoshop、Mozilla Thunderbird、PDF 技术以及 MRI 扫描仪都使用了 C++。

C 和 C++ 有什么区别?

主要区别在于 C++ 是面向对象语言,而 C 是过程式编程语言。C 不允许在结构体中定义函数,而 C++ 允许。C 和 C++ 也有一些不同的函数、关键字和内存分配过程。

C++ 和 C# 有什么区别?

C# 是一种较新的语言(由微软于 2000 年创建),并且基于 C++ 构建,因此它们拥有相似的语法。两者之间的一个主要区别在于灵活性。C# 会在您编写代码时显示编译器警告,以帮助您减少错误,而 C++ 则不会。C# 只能在 Windows 操作系统上运行,而 C++ 可以在任何平台上运行(MacOS、Linux、Windows 等)。C# 非常适合移动和 Web 应用程序,而 C++ 则以性能和直接与硬件交互的程序而闻名。它们在内存管理方面也略有不同。

C++ 与其他编程语言相似吗?

C++ 是许多其他面向对象编程语言的基础,例如 Java、JavaScript、Python、PHP、Rust、C# 等。学习 C++ 的语法将使学习其他编程语言变得更加容易。

最好的编程语言是什么?

这个问题真的没有唯一的答案,每个开发者都会给出不同的答案。这取决于你对什么类型的工作感兴趣、你的必备知识以及你的职业目标。事实上,每种编程语言都很难学,但你有能力学习其中任何一种。从 C++ 开始学习有几个好处:语法通用,你不得不考虑内存管理,并且它会向你介绍多种编程范式,这是拓展思维和寻找解决问题新方法的好方法。

C++ 需求旺盛吗?薪资待遇好吗?

是的,没错。只要你投入时间,就会有回报。C++ 开发人员的薪水已经很高了,而且预计未来几年还会继续增长。C++ 正重新流行起来,因为它非常适合开发自动驾驶汽车和虚拟现实等强大的应用程序。由于 C++ 的学习曲线比大多数语言都要陡峭,你所掌握的技能将使你在求职时脱颖而出。一些开发人员认为,C++ 将为你打开其他编程语言无法打开的大门。

替代文本

5. C++初学者资源

替代文本

由于 C++ 是一门非常成熟的语言,因此有很多资源可供新学习者使用。有了如此多的免费资源,您可以掌控自己的学习。以下是一份针对 C++ 初学者的最实用免费资源列表。

教程/在线课程

Educative 的免费 C++ 从零开始学习课程
Educative 与业内专家合作,为初学者打造了一站式免费 C++ 教程。这门基于文本、高度互动的课程首先介绍基本概念,然后逐步讲解更复杂的概念,例如多维数组、循环、继承等等。

每章都包含丰富的实践练习、可视化和示例,让您的学习更加轻松。本课程也是我们精心设计的学习路径的第一部分。完成我们的“从零开始”课程后,只需点击按钮,您就能知道下一步该学什么!

社区和论坛

  • C++ 聚会:这是一个免费平台,将志同道合的人们聚集在一起。搜索您所在地区的本地 C++ 小组和社区。

  • Dev.to C++ 社区:这是一个开放的论坛和资源平台,面向所有技能水平的开发者,提供获取帮助、提问和解决问题的平台。Dev.to 上的 C++ 社区非常活跃,您可以在这里找到文章、常见问题解答和启发性的想法。

  • GitHub C++ 社区:GitHub 是全球最受欢迎的开发者在线社区和论坛之一。在这里,你可以向其他 C++ 开发者学习、提问并为项目做出贡献。

  • StackOverflow C++ 社区:StackOverflow 是一个开放的论坛,您可以在这里提问并讨论任何与 C++ 相关的问题。StackOverflow 是面向开发者的最佳在线社区之一,它提供了丰富的信息,可以在任何阶段为您提供帮助。

在线培训/实践

  • Edabit:Edabit 就像开发者版的 Duolingo。你可以搜索 C++ 在线挑战,并在其嵌入式编程环境中进行训练。练习难度不一,可通过标签搜索。

  • Google Code Jam:通过与他人在 C++ 项目上竞争来学习。Code Jam 是历史最悠久的编程竞赛,你可以运用新学到的 C++ 技能来解决各种难题和挑战。

  • Project Euler:这是一个通过解决数学问题来训练你的 C++ 技能的好地方。问题难度各异,因此你可以随着自信心和技能的提升而继续使用这个平台。

风格指南和库

  • Bjarne Stroustrup 的网站:C++ 的创始人 Bjarne Stroustrup 维护着一个网站,发布了大量关于这门编程语言的实用信息,包括免费阅读他的著作和完整的术语。该网站还记录了 C++ 的历史、与计算机编程相关的研究论文、访谈等等。

  • C++ 讲座幻灯片:该网站提供各种与 C++ 编程相关的讲座幻灯片。该网站还提供有关库、STL 和软件工具的信息。

  • The Free Country C++ 库:The Free Country 提供免费的 C++ 库和源代码。当您开始构建自己的程序,或探索这些库以熟悉 C++ 语法和用法时,这将非常有用。

  • Google C++ 风格指南:风格指南由经验丰富的程序员编写,概述了如何维护某些程序。如果您想学习格式规则和语法,风格指南是一个很好的参考。


立即开始学习这门激动人心、广受欢迎的编程语言!你成为 C++ 开发者的旅程从今天开始。

学习愉快!

文章来源:https://dev.to/educative/how-to-learn-c-the-complete-guide-for-beginners-3mpi
PREV
Python REST API 教程:FastAPI 入门
NEXT
如何以及为什么成为一名机器学习工程师