百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

C++语言概述

mhr18 2025-02-15 00:07 16 浏览 0 评论

【了解】C++语言的历史

【重点】熟练使用C++编写入门程序

【考点】C++程序的编译原理

【重点】掌握C++标准输入输出

【重点】掌握C++注释的使用

【了解】熟悉C++中的关键字

一、编程语言概述及C++简介

1.1 机器语言与汇编语言概述

计算机不懂人类的语言,所以计算机程序必须用计算机可以使用的语言编写。 ? 目前有数百种编程语言,对于人们来说,开发他们使编程过程更加容易。

计算机的原生语言因计算机类型的不同而有差异,计算机的原生语言就是机器语言,是一套内嵌的原子指令集。因为这些指令都是以二进制代码的形式存在,为了以机器语言的形式给计算机发布指令,必须以二进制代码输入指令。如两位数的相加,必须写成下面的形式:

1101101010011010

使用机器语言编程非常乏味,且难以理解和修改。为此,在计算机的早期创建了汇编语言。作为机器语言的替代品。汇编语言使用短的描述性单词(助记符)来表示每一条机器指令。如:add一般表示数字的相加,sub表示相减。将数字2和数字3相加得到结果:add 2, 3, result ? 使用汇编语言比机器语言更加容易。但是使用仍然不够方便。汇编语言中的一条指令对应机器代码中的一条指令,用汇编语言写代码需要知道cpu是如何工作的。汇编语言被认为是低级语言,因为汇编语言本质上非常接近机器语言,并且与机器的类型相关。

1.2 高级编程语言

20世纪50年代,新一代编程语言就出现了。他们是平台独立的,这意味高级语言书写的程序可以在不同类型的计算机上运行。高级语言很像英语,易于学习和使用。 ? 下面列举的高级语言,每种都是为特定的目的而设计的。

编程语言

描 述

Ada

为美国国防部开发,主要用于国防项目

BASIC

初学者通用符号指令代码,是为了让初学者易学易用而设计

C

由贝尔实验室开发,具有汇编语言的强大功能以及高级语言的易学性和可移植性

C++

基于C语言开发,是一种面向对象的语言

C#

由微软公司开发的混合了Java和C++特征的语言

COBOL

面向商业的通用语言,是为商业应用而设计

FORTRAN

公式翻译,广泛用于科学和数学应用

Java

由Sun(现Oracle)公司开发,广泛用于开发一些独立于平台的互联网应用程序

Pascal

是一个简单的、结构化的、通用目的的语言,主要用于编程教学

Python

一种简单的通用目的的脚本语言,适合编写小型程序

Visual Basic

由微软公司开发,方便编程人员快速开发图形用户界面

1.3 C++简介

C++诞生于20世纪80年代初(1983年),由贝尔实验室本贾尼·斯特劳斯特卢普博士及同事在C语言的基础上开发成功的。C++保留了C语言原有的优点,并增加了面向对象的机制。(C++之父Bjame Stroustrup的个人网站:
https://www.stroustrup.com/)


https://www.bilibili.com/video/av78862700 对他的采访

C++是目前世界上使用最广泛、最强大的语言之一,下图是作者本人对于C++的介绍:



1.4 C++的应用场景

纵观整个IT行业。C++程序员的工资水平和受尊敬水平总体比其他任何一门语言高。最基本的原因是C++的偏底层特性使得它可以开发出一些对系统性能要求很高又极其高端的产品。也正是这一特点,使得C++成为程序员眼中公认的最难学习和掌握,并且学习成本最高的语言。

基本上,我们电脑桌面上的主流应用程序,像QQ,迅雷,影音播放器,浏览器,杀毒软件,单机游戏等等都是用C++做的;在web领域搜索引擎还必须用C++做;在网络世界里,我们所玩过的一切网游皆是C++的杰作,其他语言还真不行。



打遍天下无敌手的 AlphaGo

我们之前看新闻知道Google的AlphaGo下围棋的水平已经是我们人类所达不到了。其背后也是用C++和神经网络编写的。在人工智能这个领域,Python和C++已经成为主流工具

在虚拟现实领域

虚拟现实(VR)是一种可以创建和体验虚拟世界的计算机仿真系统,是利用计算机生成的一种实时动态的三维立体逼真图像,结合VR眼镜,可以在观影、游戏、旅游活动、教学等方面给人一种完美的沉浸体验。C++在这一技术中同样扮演着重要的角色

在数字图像处理领域:比如**OpenCV** 视觉识别技术

在网络软件领域:C++拥有大量成熟的用于网络通信的库,ACE是其中最具有代表性的跨平台库,在许多重要的企业部门甚至是军方都有应用。

在科学计算领域:

在科学计算领域,FORTRAN是使用最多的语言之一。但是C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多。

在操作系统领域:

操作系统主要使用的编程语言是C,但是C++凭借其对C的兼容性,面向对象性质也开始在该领域有一席之地

在游戏开发领域

市面上相当多的游戏引擎都是基于c++开发的,比如Cocos2d、虚幻4等,这些游戏引擎的代表作有失落的方舟、绝地求生、地狱之刃、中国象棋、雷电传说、俄罗斯方块、保卫萝卜、捕鱼达人、开心消消乐等等。

在三维游戏领域

三维游戏领域的计算量是十分庞大的,底层的数学全都是矩阵变换,要想画面精美、内容丰富、游戏的实时高,这些高难度需求让我们只能选择C++语言。C语言是面向过程变成的,编写像游戏那样的大型软件很吃力,这时候C++就比C更适合编程。制作好莱坞大片的软件无一例外都是C++编写。这几年火爆的的VR领域,也是C++编程的天下。

1.5 C++常见发展方向

C++ 的几个常见的发展方向:客户端,游戏,服务端,嵌入式,移动端(移动只要是跨平台的移动端用C++写通用部分,GUI可以用平台特性,也可以用C++的跨平台框架)

针对界面UI方面C++的选择也是很多的,其实C++还是擅长“内功”的方面。如果你想带个GUI界面的话,也有很多类似Qt之类的框架和界面库可以使用,网上有很多,而且很多都跨平台,还开源,不管是 Windows,还是Mac,还是Linux,还是移动端平台,通吃的。本身C/C++就是跨平台的。

另外,大家感兴趣的,远程控制软件,什么木马,什么外挂等等,可以说95%以上都是用C/C++来写的。

1.6 C++和C语言的血缘关系

现在看来,C++和C语言虽然是两门独立的语言,但是它们却有着扯也扯不清的关系。

早期并没有“C++”这个名字,而是叫做“带类的C”。“带类的C”是作为C语言的一个扩展和补充出现的,它增加了很多新的语法,目的是提高开发效率,如果你有Java Web开发经验,那么你可以将它们的关系与 Servlet 和 JSP 的关系类比。

从“学院派”的角度来说,C++支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就面向过程编程而言,C++和C几乎是一样的,所以学习了C语言,也就学习了C++的一半,不需要从头再来。

1.7 C++标准化

(1)C++ Foundations:https://isocpp.org/std/status

(2)开放标准网站(C++ Standards):
http://www.open-std.org/JTC1/SC22/WG21/docs/standards#14882

官方正版:198瑞士法郎


  1. C++11标准草案N3242
  2. C++14标准草案N3797
  3. C++17标准草案N4659
  4. C++20标准草案N4849

二、开发第一个C++程序

2.1 HelloWorld

/**********************************************************
 * 文件名称:HelloWorld.cpp
 * 文件描述:演示C++第一个程序-在控制台输出一段字符串:Hello Word!
 * 创建人员:老九学堂·窖头
 * 创建日期:someday
 * 修改人员:anyone
 * 修改日期:someday
 * 当前版本:1.0.0
 **********************************************************/
#include 

using namespace std;

int main()
{
    cout << "Hello World!\n";
    //return 0;表示程序正常结束,非0表示异常结束
    return 0;
}

2.2 C++程序的编译执行过程(面试必考)

(1)预处理器处理所有的预处理指令:是将所有#include头文件的完整内容复制到.cpp文件中。

(2)编译器把每个.cpp文件(源文件)转换为.o或者.obj文件(对象文件):包含了源文件内容对应的机器码

(3)链接程序把程序的.obj文件合并到包含完整可程序程序的文件中(.exe)



*2.3 命令行下使用微软编译器理解编译和运行的机制

cl HelloWorld.cpp /c    # 只编译,不链接
cl HelloWorld.obj /link # 链接生成 .exe 文件
cl HelloWorld.cpp       # 编译、链接生成 .exe 文件

如果要使用微软编译器cl在控制台编译及链接C++程序,需要进行相关的配置:

注意:在不同操作系统或不同 VS 版本,示例路径可能会稍有不同

1、添加cl.exe的路径到环境变量path中

E:\Program Files\Microsoft Visual

Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\bin\Hostx64\x64




控制台键入cl命令,出现以下提示第一步配置成功:




现在如果直接执行cl HelloWorld.cpp会出现错误: “fatal error C1034: iostream: 不包括路径集”

所以需要继续配置include

2、在系统变量INCLUDE(大写;没有就自己创建)中添加以下路径:

E:\Program Files\Microsoft Visual

Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\include;
D:\Windows Kits\10\Include\10.0.19041.0\shared;
D:\Windows Kits\10\Include\10.0.19041.0\ucrt;
D:\Windows Kits\10\Include\10.0.19041.0\um;
D:\Windows Kits\10\Include\10.0.19041.0\winrt;


此时执行cl HelloWorld.cpp则会出现错误:fatal error LNK1104: 无法打开文件“libcpmt.lib”或者其他lib文件,继续步骤3

3、在系统变量LIB(大写;没有就自己创建)中添加以下路径:

E:\Program Files\Microsoft Visual

Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\lib\x64;
D:\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;
D:\Windows Kits\10\Lib\10.0.19041.0\um\x64;


4、在命令行中编译执行



*2.4 在MinGW编译和执行C++程序

编译命令:

D:\>mingw32-g++ -g -c demo.cpp -o demo.o

链接命令:

D:\>mingw32-g++ -o demo.exe demo.o

执行命令:

D:\>demo.exe

2.5 编码规范及注释

C++编码风格

  • 每条语句占一行
  • 每个函数都有一个开始和结束花括号,花括号各占一行
  • 函数中的语句对相对于花括号进行缩进
  • 与函数名称相关的小括号周围没有空白

书写注释是一个良好的编程习惯

  • 有助于对代码的阅读
  • 注释语言应准确、易懂、简洁
  • 单行注释:以”//”开头
  • 多行注释:以“/”开头,”/”结尾

2.6 转义序列

转义序列

控制字符

\n

换行符

\t

水平制表符

\v

垂直制表符

\b

退格符

\r

回车符

\f

换页符

\a

警告字符

#include 
int main()
{
    std::cout << "大吉大利\n今晚吃鸡\n";
    std::cout << "大吉大利\t今晚吃鸡\n";
    return 0;
}

2.7 C++中的关键字

1、C++98标准有74个关键字

2、C++11标准(C++14、17标准关键字不变):

新增10个关键字:alignas、alignof、char16_t、char32_t、constexpr 、decltype、noexcept、nullptr、static_assert、thread_local



3、C++20标准

新增8个关键字:char8_t、concept、consteval、constinit、co_await、co_return、co_yield、requires



2.8 Visual Studio常用快捷键

今日分享到此结束,希望对小伙伴们有所帮助!

相关推荐

甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入

IT之家7月1日消息,根据甲骨文Oracle当地时间6月30日向美国证券交易委员会(SEC)递交的FORM8-K文件,该企业在始于2025年6月1日的202...

甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云

IT之家6月23日消息,Oracle甲骨文创始人、董事长兼首席技术官LarryEllison(拉里埃里森)在本月早些时候的2025财年第四财季和全财年财报电话会议上表示,Oracle...

Spring Boot 自定义数据源设置,这些坑你踩过吗?

你在使用SpringBoot进行后端开发的过程中,是不是也遇到过这样的问题:项目上线后,数据库连接总是不稳定,偶尔还会出现数据读取缓慢的情况,严重影响了用户体验。经过排查,发现很大一部分原因竟然...

一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

低代码建模平台-数据挖掘平台(低代码平台的实现方式)

现在来看一下数据连接。·这里是管理数据连接的空间,点击这里可以新增一个数据连接。·输入连接名称,然后输入url,是通过gdbc的方式去连接的数据库,目前是支持mysql、oracle以及国产数据库达梦...

navicat 17.2.7连接oracle数据库提示加载oracle库失败

系统:macOS15.5navicat版本:navicatpremiumlite17.2.7连接oracle测试报错:加载oracle库失败【解决办法】:放达里面找到程序,显示简介里面勾选“使...

开源“Windows”ReactOS更新:支持全屏应用

IT之家6月17日消息,ReactOS团队昨日(6月16日)在X平台发布系列推文,公布了该系统的最新进展,包括升级Explorer组件,支持全屏应用,从Wine项目引入了...

SSL 推出采用全模拟内置混音技术的模拟调音台Oracle

英国调音台传奇品牌SolidStateLogic宣布推出Oracle——一款采用全模拟内置混音技术的调音台,在紧凑的AWS尺寸机箱内集成了大型调音台的功能。该调音台提供24输入和...

47道网络工程师常见面试题,看看有没有你不会的!

你们好,我的网工朋友。网络工程师面试的时候,都会被问到什么?这个问题其实很泛,一般来说,你肯定要先看明白岗位需求写的是什么。基本上都是围绕公司需要的业务去问的。但不可否认的是,那些最基础的概念,多少也...

汉得信息:发布EBS系统安装启用JWS的高效解决方案

e公司讯,从汉得信息获悉,近日,微软官方宣布InternetExplorer桌面应用程序将于2022年6月15日正式停用。目前大部分客户都是使用IE浏览器打开EBS的Form界面,IE停用后,只能使...

36.9K star ! 推荐一个酷炫低代码开发平台!功能太强!

前言最近在逛github,看看能不能搜罗到一些对自己有帮助的开源软件。不经意间看到一个高star的java开源项目:jeecg-boot。进入在线演示版一看,感叹实在是太牛了!此开源项目不管是给来学习...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

手把手教你在嵌入式设备中使用SQLite3

摘要:数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table),在嵌入式linux中有时候它也需要用到数据库,听起来好难,其实就是几个函数...

JAVA语言基础(java语言基础知识)

一、计算机的基本概念什么是计算机?计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行、自动高速处理海量数据的现代化智能电子设备。由硬件和软件组成、没有安装过任何软件的计算机称...

再见 Navicat!一款开源的 Web 数据库管理工具!

大家好,我是Java陈序员。在日常的开发工作中,常常需要与各种数据库打交道。而为了提高工作效率,常常会使用一些可视化工具进行操作数据库。今天,给大家介绍一款开源的数据库管理工具,无需下载安装软件,基...

取消回复欢迎 发表评论: