如何开始学习C++

以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」mp.weixin.qq.com/s/NemwdfC6j...

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

它是世界上最流行的编程语言之一,给程序员提供了对系统资源和内存的高度控制,以用于开发运行在多个平台上的应用程序,如服务器、个人计算机、基于云的系统和移动设备等。

学习 C++ 可以帮助你进入计算机游戏、高端计算项目的软件工程、加密货币挖掘程序以及开发运行在移动设备上的操作系统和其他软件等领域。

C++ 历史简介

C++ 是由丹麦计算机科学家 Bjarne Stroustrup 创建、设计和开发的。设计之初,Stroustrup 希望创建一种类似于 C 的灵活和动态的语言,但具有更多的功能。

最初被称为"带类的C",1983 年改名为C++,大致意思是"比 C 多一点"的意思。

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

C 与 C++ 的区别

C++ 是 C 的演变,虽然它们有一些相似之处,但现在它们已经有了很大的不同。虽然 C 广泛被使用,但它不支持 C++ 所支持的抽象、泛型编程和面向对象编程。

如果你想做一些需要大量代码的庞大工程,那么你就需要能够以非常高级的抽象方式思考。这是 C++ 所擅长的:支持这些高级抽象。

抽象层指的是观察或编程系统的复杂程度。较低级别的抽象具有更多的细节,而高级别的抽象可以包含整个系统。

C 是一种过程化语言;其代码由直接告诉计算机或其组件以逻辑步骤完成任务的指令组成。C++ 也可以做到这一点,但它还支持类和面向对象等高级特性,这使得程序员可以创建包含数据和函数的"对象"。这种方法的优势在于,软件对象执行速度更快,比过程命令更容易执行,面向对象编程使得代码更容易修改、维护和调试。

学习 C++ 起步步骤

由于 C++ 很受欢迎,对于初学者来说,有许多资源可供选择,包括在线教程、网站和书籍。

在决定学习 C++ 或任何计算机语言时,初学者应该对自己的专业目标有一定的设想。

大多数使用 C++ 的人都是专业软件工程师。这是一个重要的标志,特别是对于最近从大学毕业或具有计算机科学背景的人来说。计算机科学家研究更多的是理论性的课题,而专业软件工程师必须处理解决技术问题的细节相关,而 C++ 非常适合这种工作。

如果你选择使用 C++ 是因为你面临着非常苛刻的情况。比如你在开发游戏,性能绝对是关键因素。或者你可能在开发某种系统软件,性能同样很关键。靠近机器的底层硬件的操纵能力也很重要,C++ 具有这种能力。

开始学习 C++ 之前

虽然任何人都可以学习 C++ 编程,但具有一些基础的编程经验可能会有所帮助。对于 C++ 和 JavaScript、Python 等语言常见的语句、for 循环、while 循环和其他代码结构等基本计算机术语的了解会对快速学习很有用。

对于初学者来说,我认为理解语法,能够编写一个简单的程序,然后打印一些内容,并能够解释每行代码都在做什么,以及了解数据类型这些都很有帮助。

学习资源和参考资料

但是如果你没有这些基本技能怎么办?不要害怕,目前在互联网上有非常多资源可以帮助你入门。比如 W3Schools.com 和 Codecademy 等入门教程网站。

最近八戒联合其它 19 位行业内大牛联合开发了一门《嵌入式小白千宝箱》教程,专门面向嵌入式小白人士,旨在通过 1000 个痛点问题直击小白的学习痛点,其中八戒负责 C++ 编程入门专题,欢迎关注并后台联系我!

第一步:学习语法并上手一些教程

语法是编程语言的表达文法,也是所有代码的基础。语法还定义了代码的组成和理解方式。

以下是一些例子,创建一个简单的代码行来打印文本 "Hello World":

arduino 复制代码
#include <iostream>
using namespace std;

// main () 程序开始执行的地方
Int main ()
{
  cout << "Hello World\n" ; // 输出到屏幕 Hello World
  return 0;
}

#include <iostream> 这是一个头文件库,将其中包含的特性导入程序。该命令要求程序从一个名为 <iostream> 的文件中复制内容,iostream 代表输入和输出流。

Using namespace std 声明将引用标准库(std)中的对象和变量名称,应用时经常缩写为关键字 std 和操作符 ::。

int main( ) 指定一个主函数。函数是 C++ 程序的重要部分,因为它们定义了代码中的一个动作。包含在这些大括号 { } 中的命令将被执行。

cout(读作see-out)是一个定义输出的对象,可输出代码中的一串文字。利用操作符 << 可串行输出多个字符串。\n 将使后边的文本输出换行。

return 0 指示程序不会返回任何内容,上面的文本字符串将是唯一的输出。

<< 是一个命名对象的操作符而 ;(分号)作为代码行的结束符。

第二步:练习基础知识

掌握语法后,一个初学者应该了解语言的更多方面。比如:

  • 函数:函数是一组语句,共同完成一个任务。每个 C++ 程序至少有一个函数-- main 函数。

  • 数组:数组是一种数据结构,用于存储相同类型元素的数据集合,大小固定,而且数据排列顺序。

  • 字符串:字符串是以空字符'\0'结尾的字符的一维数组。

  • 指针:指针一种变量,其值为其他变量地址。指针有助于更灵活地执行 C++ 任务,有些任务非常依赖指针来完成。

  • 引用:引用是变量的别名,是已经存在的变量的另一个名称。如果引用已通过变量初始化,那么变量的名称和引用名称可以互换使用。

  • 类和对象:类是 C++ 的一个关键特性,通过将数据表示和操作数据的方法结合成一个包来指定对象的形式。类提供了用于创建对象的蓝图或者抽象概念。

  • 多态性:多态性意味着具有多种形式。在 C++ 中,形象地理解指的是调用一个函数,但执行的却是不同的函数,具体取决于调用函数的对象类型。

第三步:将知识付诸实践

学习了一些 C++ 编程技能后,就应该将它们应用到实践中了。其中一种方法是通过开展项目来了解语言的各个方面是如何结合在一起的。有许多网上的开源项目可以提供想法,比如编写简单的游戏或构建银行应用程序。

此外,还有许多在线社区专门讨论和应用 C++,因此你可以与业余爱好者、兼职程序员或专业人士联系。

第四步:深入学习高级 C++

中级和高级 C++ 编程技能建立在基础知识之上,同时为程序员提供了一系列辅助工具。在中级水平时,程序员需要理解引用和指针的工作原理。支持强大的 C++ 函数的其他核心概念包括对象生命周期和多态性。对这些概念的深刻理解以及如何创建和使用库函数将使程序员能够学习高级技术。

在高阶水平,优秀的 C++ 程序员可以摆脱面向对象编程,利用更通用的泛型编程。面向对象编程并没有错,仍然有数以百万计的程序员在使用这些编程思想,但是优秀的程序员会将他们的技能提升到一个新的水平。

已经进阶的程序员正在使用泛型编程,并且使用编译时来增强代码的运行时控制。高阶开发人员正在编写通用的代码,以便可以轻松地适应多个平台。

C++ 与 Java,有何不同?

C++ 和 Java 经常被认为是竞争关系的两种编程语言,但它们用于不同类型的编程。Java 使用虚拟机------模仿硬件的软件------来执行各种功能,因此无需重新编译的情况下,它开发的程序就可在多个平台上直接运行,比如 Windows、Linux、Mac、Android 和 Apple iOS 等。

C++ 也是跨平台的,但它需要为每个系统单独编译一个程序才能运行。C++ 的优势在于它能够编写内存高效的应用程序,这些应用程序直接操作内存地址也可能带来安全隐患。

现实是,互联网时代更看重通用兼容性,这使得 Java 非常受欢迎。而专注在内存和性能效率时的,就是 C++ 的优点所在。

如何成功学习 C++

  • 学好语法。
  • 掌握基础知识,如函数、数组、字符串、类等。
  • 利用在线教程、书籍和讲座等资源。
  • 坚持不懈。编码和许多其他技能一样,需要时间学习,所以犯错误很正常,不要害怕。
相关推荐
雨中rain3 分钟前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
搬码后生仔44 分钟前
asp.net core webapi项目中 在生产环境中 进不去swagger
chrome·后端·asp.net
凡人的AI工具箱1 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ALISHENGYA1 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战项目二)
数据结构·c++·算法
arong_xu1 小时前
现代C++锁介绍
c++·多线程·mutex
汤姆和杰瑞在瑞士吃糯米粑粑1 小时前
【C++学习篇】AVL树
开发语言·c++·学习
DARLING Zero two♡2 小时前
【优选算法】Pointer-Slice:双指针的算法切片(下)
java·数据结构·c++·算法·leetcode
Lx3522 小时前
Pandas数据重命名:列名与索引为标题
后端·python·pandas
小池先生2 小时前
springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失
java·spring boot·后端
CodeClimb2 小时前
【华为OD-E卷-木板 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od