首页 > 自考资讯 > 自考知识

c++该怎么学,怎样学好c++语言

头条共创 2024-06-27

大家好。我毕业于哈尔滨工业大学,曾在华为、阿里巴巴等大公司工作过。如果您有升学、就业、技术提升等方面的疑问,请随时与我们联系。您可能还想交一些朋友:

我是Jackpop,我们交个朋友吧!

C++ 是一种通用的面向对象编程语言,可用于开发操作系统、游戏、图形用户界面、后端以及高性能系统和应用程序。

因此,尽管Python、Go等后起之秀近年来大受欢迎,但在很多领域仍然无法撼动C++的地位。

这次我就教大家如何学习C++从基础到高级,从入门到实用。

由于本文比较长,我们先提供一下本文的目录。

C++简介什么是C++?为什么要学习C++ C++的历史C与C++的区别从入门到实际开发环境C++简介C++练习C++高级学习资源书籍视频课程开源项目现在,让我们进入本文的正式内容。

C++简介

什么是C++?

e60c96854557405584549166ff7ebaf6~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720058018&x-signature=gXxkgIU9iIk2QuzDtCah3KfDsg4%3D 当今流行的编程语言有很多,包括Python、Go、Java、PHP和JavaScript,每种语言都有自己的专业化和方向。

C++ 对系统资源和内存的卓越控制使其在操作系统、图形、游戏和嵌入式系统等任何性能密集型领域中都不可或缺。

它可用于开发在服务器、PC、基于云的系统和移动设备等多个平台上运行的应用程序。

为什么学C++?

如果您对计算机游戏、高端计算项目的软件工程、加密货币挖掘程序或移动设备操作系统开发等领域感兴趣,学习C++ 是必不可少的。

另外,相比Go、Python等高级编程语言,它涵盖了更全面的编程知识,帮助学习者理解变量、函数、面向对象、指针、内存等。这些可以在多种语言中轻松找到。高级语言中被忽视的概念和知识。

C++的历史

1e4a3ef627ad4742ae7c7a9a4f8ce7a8~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720058018&x-signature=bbGkhvy%2FKmZaElR%2BFYmP%2BOA5PZY%3D

C++ 由丹麦计算机科学家Bjarne Stroustrup 创建、设计和开发。

Strustrup 希望创建一种类似于C 且具有更多功能的灵活动态语言。

最初称为“C withclasses”,1983 年更名为C++。这意味着比C 高一级。

国际标准化组织C++联合技术委员会在1998年至2017年间对C++进行了五次升级。

新版本的C++20也将发布。

C和C++的区别

C和C++有什么区别?

这是学习C、C++时不可避免的问题。

Jon Kalb(软件工程讲师、C++ Now 和CppCon **)表示,C++ 是C 的演变。

尽管两者在某些方面很相似,但现在却截然不同。

Kalb 说,虽然C 语言被广泛使用,但它不支持C++ 所支持的抽象、通用编程或面向对象编程。

大型项目通常需要非常高的抽象级别,而C++ 在这方面比C 语言要好得多。

抽象级别是指观察或编程系统的复杂性。较低级别的抽象包括更详细的信息,而较高级别的抽象可能包括整个系统。

C语言是一种编程语言,其中代码由直接指示计算机或其组件以逻辑步骤完成任务的指令组成。

C++ 也可以做到这一点,并且还支持类和面向对象等高级功能,允许程序员创建包含数据和功能的“对象”。这种方法的优点是软件对象比过程指令执行得更快、更容易,并且面向对象的编程使代码更容易修改、维护和调试。

编译型语言和解释型语言

当我们谈论编程语言时,我们首先需要了解语言的类型。

编程语言分为编译型语言和解释型语言。下面解释一下。

编译语言:需要经过特殊的编译过程,将程序编译成机器语言文件,然后才能执行。您可以直接使用编译结果,而无需在运行时重新翻译它们。程序执行效率高,依赖编译器,跨平台性能低。典型的例子包括C和C++。

解释型语言:与编译型语言相比,源代码不直接翻译成机器语言,程序仅在运行时翻译成机器语言。因此效率比较低。典型示例包括Java、Python 和JavaScript。

从入门到实战

由于C++ 非常流行,因此有许多资源可供初学者使用,包括在线教程、网站和书籍。

当您决定学习C++ 或任何其他计算机语言时,您首先需要知道它的使用方式和位置。

如果您的工作重点是算法和分析,并且对性能不敏感,例如机器学习、深度学习或数据分析,您可以选择R 或Python 等语言。

然而,如果你从事游戏、系统等对性能要求严格的职业,C++应该是你的首选。

让我们开始你的学习之旅吧!

开发环境

前面提到,C++是静态编译语言,因此在开发环境配置过程中必须使用相应的编译器。

有许多可用于C++ 的编译器,但GCC 或GNU Compiler Collection 是最流行的C++ 编译器之一。

以下是在各种操作系统上安装编译器的说明。

Linux

8891fa943918427c8b93e4d300bfc754~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720058018&x-signature=hE52P6BkXsgPSsIqV8eW2GsSrxA%3D

如果您使用的是Linux,GCC 可能已经默认安装。

如果没有,您可以使用以下命令安装它:

# Debian/Ubuntusudo apt install build-essential# Fedorasudo dnf install make automake gcc gcc-c++# Arch Linuxsudo pacman -S Base-devel Linux 的IDE 可以是Codeblocks IDE 或Eclipse CDT for Linux。

macOS

在Mac 上,您可以使用Clang 或GCC。两者都是免费的。

GCC 支持广泛的C 和C++ 标准,但Clang 在大多数情况下工作得很好。

GCC 可以使用Homebrew 安装。

您可以选择Visual Studio Code 或Xcode 作为开发工具。

Windows

Windows 有许多优秀的编译器。

在Windows上,Visual Studio提供了C++编译器,也可以构建C语言程序。

Visual Studio 拥有自己强大且功能丰富的IDE,这使其成为任何开始使用C 或C++ 或主要针对Windows 平台的人的绝佳选择。

如果您想要一个更符合标准的编译器,也可以使用GCC (MinGW),并且您可以配置Codeblocks IDE 以满足您的需求。

就IDE 而言,Clang 目前是一个相对容易使用的工具。还有一些跨平台IDE 提供全功能的C 和C++ 开发环境,例如Eclipse CDT、Jetbrains CLion 和Netbeans。

Visual Studio Code 如今非常流行,受到许多编程语言的欢迎,也可以在Linux 和Mac 环境中使用。

C++入门

语法是编程语言的核心,也是C++开发的基础。就像我们说中文或英语一样,语法定义了C++ 代码的构建和理解方式。

示例代码如下。

#include iostreamusing namespace std:Int main () {cout ”Hello World”; return 0;#include iostream: 这是一个将功能导入到程序中的头文件库。该命令的含义是程序从代表输入和输出流的名为iostream 的文件中导入内容。

使用命名空间std:指标准库(std) 对象和变量名称,通常缩写为关键字std 和运算符:

int main ( ): 指定主函数。函数是C++ 程序的重要组成部分,因为它们定义代码中的操作,并且执行括号{ } 中的代码。

cout(发音为see-out):定义在代码中将Hello World 打印为字符串的输出的对象。

return 0:告诉程序不返回任何内容,只输出文本字符串。

: 是用于命名对象的运算符,(分号冒号)充当代码行的终止标识符。

这些组合起来形成完整的C++ 代码。

这段简短的代码仅涵盖了一些基本的C++ 语法。如果你不先学习基本语法,这段代码就会像一本圣经,你不知道自己在做什么。这意味着什么?

如果你懂得基本语法,理解意思就像看中文句子一样容易。

基本语法只是入门的一方面。此外,您应该对以下内容有基本的了解:

函数- 函数是一组共同完成任务的语句,每个C++ 程序都至少有一个函数。 数组- 数组是一种数据结构,用于存储相似元素的固定大小的顺序集合。 字符串- 字符字符串是以空字符“/0”结尾的一维字符数组。 指针- 指针是一个变量,其值是另一个变量的地址。虽然指针对于促进C++ 任务的执行很有用,但引用是现有变量的别名或其他名称。当引用被初始化为变量时,变量名和引用名可以互换使用来引用变量的类和对象。类是C++的一个重要特性,它表示数据并提供操作数据的方法。将数据组合成包并指定对象的格式。 多态性——多态性意味着具有不止一种形式。在C++ 中,这指的是调用一个数值函数,该函数会根据调用该函数的对象的类型导致执行不同的函数。

C++实战

一旦您开始使用C++ 并学习了C++ 编程技术,接下来您需要执行以下操作。好好利用它们,在实践中磨练你的C++ 技能,并变得精通。

实现此目的的一种方法是运行该项目并查看该语言的不同方面如何组合在一起。

目前Github上有很多相关项目,通过阅读相关代码,了解其实现过程,自己复现相关项目,可以起到实际作用。

我们还可以根据您感兴趣的领域找到一些相关的需求场景,并通过C++实现相应的工具和软件。

例如,开发一个简单的游戏,实现一个文档翻译工具,或者开发一个简单的计算器。

C++进阶

中级和高级C++ 编程基于基础知识。

《C++ Crash Course》 书的作者Lospinoso 表示,在中级水平上,程序员需要了解引用和指针的工作原理。支持一些最强大的C++ 功能的其他核心概念,例如对象生命周期和多态性。

如何理解这些概念、如何使用它们以及如何将它们有效地应用到您的项目中是您在走高级路线时必须学习的内容。

C++编程的进步需要学习和掌握通用编程和泛型编程,而不是学习基本语法或如何通过面向对象编程来实现功能和系统。您应该考虑代码的多功能性和可扩展性,以使其向后兼容并轻松适应多个平台的需求。

学习资源

书籍

《C++ Primer Plus(中文版)》

大多数C++ 开发的学生都读过或至少听说过这部永恒的经典。

这是一本全面、详细、权威的C++书籍,非常适合初学者。即使你没有编程基础,阅读它也不存在太大障碍。

另外,相比很多资料更喜欢给出伪代码,本书提供了大量完整且可执行的代码,这对于基础薄弱的同学来说非常合理。

而且,相比很多只解释概念和理论的书,本书从更高的层面解释了C++,比如潜在的问题在哪里。哪些地方需要特别注意?我们会给您详细的提示和解释。

《C++ Primer(中文版)》

这本经典的C++书籍由C++领域的三位专家共同撰写。 C++ 大师Stanley B. Lippman、前C++ 标准委员会**Jose Lajoie 和C++ 先驱Barbara E. Moo。我们还将重点关注三位专家对C++ 的独特理解。

与许多书籍中对简单概念的解释相比,《C++ Primer(中文版)》涵盖了从原因到结果、浅层到深层、表面到内在、从语言的简单用法到语言为何如此设计的一切。从用户的角度来看,你不仅能够从语言设计者的角度学习一切,还能够从语言设计者的角度思考设计这种语言的利弊。

此外,本书还可作为参考词典。在这里您将找到日常C++ 开发过程中遇到的许多语法和编译问题的答案。

相比全面厚实的

《Essential C++中文版》

,《C++ Primer Plus(中文版)》和《C++ Primer(中文版)》就“薄”了很多。

相比前两本书的全面性,本书重点讲解C++的高级部分,整本书以面向过程(process-orientation)、泛型(generic)、基于对象(object-based)为重点。详细解释了面向对象(objectorientation),分为四个方面。从这里您可以学习C++的高级用法。

《C++标准库》

标准库是C++非常重要的一部分,也是C++开发不可避免的一部分。

《Essential C++中文版》 除了大量已实现的实际代码示例之外,本书还涵盖了设计目标和方法、复杂概念的分析、实用高效的编程细节、现有陷阱以及重要的类,详细描述了标准库的每个组件,包括其内容。功能和功能。使用C++11 标准并涵盖新组件和功能。

本书重点关注标准模板库(STL),涵盖容器、迭代器、函数对象和STL 算法。

《Effective C++:改善程序与设计的55个具体做法》

这是世界著名C++软件开发专家Scott Meyers的经典著作。这本书更像是经验的积累。

如果你想往C++方向发展,我建议阅读《C++ 标准库》。是作者多年C++程序设计和优化过程实践经验的提炼和延伸。这也是普通程序员和高级程序员差距的关键。

《More Effective C++(中文版)》

这是Effects C++ 的续集,由Scott Meyers 于1996 年开始。也比《Effective C++》更高级。

本书适合有一定经验的C++开发人员,但对于C++初学者来说有些困难。

视频课程

其实,要学习C++,看上面介绍的六本书就足够了。

然而,不同的学生有不同的学习偏好。有些学生喜欢看书来学习新知识,而另一些学生则喜欢看视频。

因此,我们向您推荐两门视频课程。两者都是免费的。

《面向对象程序设计-C++》

内容包括基础理论、类和对象、构造和清理、函数、引用、继承和多态性、复制构造、运算符重载、异常、模板和流等等。本课程涵盖汇编、操作系统等知识。内容简单易懂,并且引用了很多经典书籍,可以说课程是经过深思熟虑的。

《C++教程:从0到1入门编程》面向对象程序设计-C++ - 网易云课堂《C++教程:从0到1入门编程》

B站热门C++视频课程。从基础语法到高级知识,从概念理解到实践练习,它的浏览量已超过1500万次。没有多余的废话,纯粹实用的视频教程。初学者友好。

开源项目

我个人认为开源项目是学习编程语言非常快速有效的方式。

得益于Github 的强大功能,我们拥有许多高质量的开源项目,您可以在其中了解优秀程序员如何编码并学习他们的编程模式。另外,通过从这些项目中汲取灵感并进行实际项目,您将能够摆脱书本上的理论知识,转向更接近现实生活场景的项目,从而升华和完善您的技术。普通C++ 程序员进阶为高级C++ 程序员。

interview

星星:24.4k

C/C++ 技术面试基础知识概述,包括语言、程序库、数据结构、算法、系统、网络、链接加载库等。

这是一个面向初学者的C++ 项目,与书中内容相比,编译了现实项目中经常遇到的C++ 问题和答案。问题。

因此,这个项目可以让你远离书本和教程,学习到很多有实用价值的C++知识和技能。

tinytetris

星星:1.7k

这是一个用C++实现的小型俄罗斯方块项目,与那些较大的项目相比,对于初学者来说更容易,并且将C++与熟悉的游戏开发有机地结合起来,使其适合学习者提供更直观的体验。它增加了沉浸感并吸引学习者对程序设计过程的注意力。例如,我们如何实现块图像?如何实现块移动和选择?如何实现抵销和合并功能?

所有这些问题都可以通过这个小项目得到解答。

MyTinySTL

星星:6.3k

前面介绍过,STL是C++非常重要的一部分,是学习C++时绕不开的一个概念。

MyTinySTL对于刚学完基础知识、想要夯实基础的同学来说非常有用,带有代码示例和详细的解释,帮助初学者更好地理解如何使用STL。

到目前为止,我们已经介绍了几个适合初学者的开源项目。适合刚刚放下书本,需要一些实践项目来练习技能,提高对理论知识的印象和理解的学生。这里有一些具有前瞻性、实用性的开源项目。

Cytopia

星级:1.4k

Cytopia 是一款免费、开源、复古像素艺术城市建设游戏,由基于SDL2 的自定义等距渲染引擎提供支持。

该项目包含游戏开发的许多重要元素,包括渲染引擎、UI 系统、摄像机平移和缩放、地形操纵和音效。

这是一个比较完整、内容丰富的开源项目,对游戏开发感兴趣的同学可以详细了解。

OpenTTD

星星:4.1k

OpenTTD 是一款交通模拟游戏,基于Chris Sawyer 编写的热门游戏Transport Tycoon Deluxe。

我们尝试尽可能地模仿原始游戏,同时用新功能扩展它。

OpenTTD 根据GNU 通用公共许可证2.0 版获得许可,但包括根据单独许可证获得许可的第三方软件。

devilutionX

星星:5.8k

DevilutationX 是《Effective C++》 和《暗黑破坏神》 的源端口,旨在简化游戏运行,同时提供引擎改进、错误修复和一些可选的生活质量功能。

calculator

星级:25k

Calculator 是一个用C++ 编写的Windows 计算器程序,预装在Windows 中。

是的,这就是Windows 操作系统中当前使用的计算器。

该应用程序提供标准计算器、科学计算器和程序员计算器的功能,以及一组不同测量单位和货币之间的转换器。

DearPyGui

星星:7.9k

DearPYGui 是一个快速且强大的Python 图形用户界面工具包,使用C++ 开发,具有最小的依赖性。

在这个项目中,您将学习如何使用C++实现UI界面以及开发图形图像。

Clementine

星级:3.2k

Clementine 是一款适用于Windows、Linux 和macOS 的现代音乐播放器和库管理器。

通过这个项目,您将学习如何使用C++处理音频文件并实现文件组织和管理。

zeal

星星:9.6k

zeal是一款用C++开发的离线文档查看和阅读工具。该项目包括Qt、cmake、libarchive 和SQLite 等工具。

这里我们一共介绍了10个开源项目,包括实践知识、游戏开发、用户界面、游戏引擎、媒体播放和文档工具。有些适合初学者,有些则适合高级C++。请根据您的需要进行选择。为了更深入地理解和学习,选择适合您兴趣方向的项目。

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢