欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > C++概念以及基础框架语法

C++概念以及基础框架语法

2025/6/9 21:20:32 来源:https://blog.csdn.net/m0_74147998/article/details/148512284  浏览:    关键词:C++概念以及基础框架语法

C++概念以及基础框架语法

文章目录

  • C++概念以及基础框架语法
    • 1. C++的诞生
    • 2. C++能干什么
    • 3. C++概念小结
    • 4. 最简C++程序
      • 4.1 头文件
      • 4.2 名字空间
      • 4.3 标准输入、输出
    • 5. C++编译

1. C++的诞生

1972年前后,计算机先驱丹尼斯·里奇开始设计C语言并用它来重写Unix系统,里奇的这个决定催生了计算机领域最石破天惊的两门重炮:Unix和C,这两者都是IT产业中鼻祖级的存在,Unix是现代苹果系统和Linux系统的最初来源,而C则是现代众多编程语言的思想源泉。后来随着IT产业的发展,C语言加入了诸如面向对象、泛型编程等新特性,在1983年前后,贝尔实验室的Bjarne Strou-strup推出了现代编程界中威力最猛的一门重炮:C++。

C++进一步扩充和完善了C语言,成为一种多种编程范式的程序设计语言。从其名称可以推断,这种编程语言与C语言有密切的联系,实际上它们通常被合称为C/C++,它们的关系主要体现在以下两点:

  • C++是C语言的超集,C语言是C++语言联邦的一部分。
  • C++完全兼容C语言,并提供众多火力强大的现代编程范式 。

在这里插入图片描述

C与C++

据统计,当今世界上不同的编程语言有几百种之多,C++是使用最广泛的编程语言之一,是名副其实的顶流。C++强大的同时,也是一门比较复杂的语言,它还包括函数式编程、泛型编程等不同的编程范式,有人说C++不是一门编程语言,而是众多编程语言的合集。

2. C++能干什么

C++主要用在开发系统、算法核心、游戏引擎等对性能高度敏感的领域,除了性能出众,C++的高安全性也是首屈一指的。下面简单罗列C++在IT各开发领域所展露的强大生命力。

游戏
C++非常适合开发游戏,它的超前设计在应对3D游戏的复杂性时游刃有余,C++对网络的良好支持使得开发大型多人同时在线游戏成为可能,更进一步,由于C++允许直接控制硬件,因此能极大释放CPU的潜能,这种高性能使得C++被广泛应用于不同的游戏和游戏引擎。

动画
许多动画软件都是用C++开发的,C++非常适合用于图像处理、视觉效果呈现等典型的资源消耗型软件,比如:三维动画、建模、仿真、渲染,尤其是虚拟现实VR的场景和角色创建。

浏览器
C++也适合于用来开发浏览器,比如微软著名浏览器IE,谷歌的 ChromeFireFox 等,都是C++编写的,C++还是谷歌和Mozilla开源项目的核心呈现引擎的编程语言。

数据库
C++在数据库软件开发中也占据非常重要的地位,最流行的数据库管理软件 MySQL 就是其中一例,C++有助于节省时间、成本,提高业务系统的开发效率,还有大量基于数据库软件访问的应用程序,主要都使用C++开发,这使得数据库访问快速、准确。

多媒体
C++当然可以用于创建媒体播放器,管理音视频文件等,它使得我们享受音乐,访问和分享视频和音乐文件。相关的C++类库还具有艺术支持、音频和视频流媒体等功能。甚至提供互联网无线电台的接入。

编译系统
大多数的编译器都使用C++开发,编译器是一种将计算机语言翻译成机器指令的特殊软件,比如C#、Java等语言的编译器都是由C++进行翻译,然后才能交给CPU去运行。C++在底层层面为各种各样软件的移植性提供支持。

从这方面理解,C和C++是编写其他语言的语言,是许多编程语言的母语言。

操作系统
开发编译系统和操作系统,从某种程度上讲是C/C++当初被设计出来的初衷,如今世界上通行的底层操作系统几乎全部都是C/C++开发的,比如微软的 Windows2000XPUnix/Linux 系统,安卓系统和苹果公司的部分操作系统。

应用开发
图形应用软件领域也大量广泛使用C++开发,比如被著名的图形设计软件 PhotoShop 、Adobe系列软件,微软的 Office 办公套件和 Visual Studio,还有大量应用于人工智能领域的算法引擎。

3. C++概念小结

​ 由于出生年代较早,C/C++并不是最易用、语法结构最浅显的语言,这主要是因为早期的计算机资源有限,计算机科学家在开发C/C++的时候,最在意的是最终代码运行的效率,而远非代码编写的难易度,这导致C/C++可以支持非常贴近底层硬件细节的语法,抓地力非常强,因而学习曲线要比一般的编程语言陡峭,也就是对学习者的要求更高。

但也正是因为以上原因,C/C++天生具有高性能的血统,在目前的IT产业中,凡是涉及底层系统、算法核心、游戏引擎等对性能敏感的领域,C/C++都扮演者着不可或缺的角色,因为这些部件哪怕1%的性能波动,都会对整个软件的体验带来本质的改变。
总体来讲,C/C++是一门难学易用的编程语言,是计算机编程领域的重装武器,一旦掌握,威力无比。

4. 最简C++程序

我们可以从一段最简单的 HelloWorld 代码入手,理清C++程序的基本结构。

// HelloWorld.cpp示例代码
#include <iostream>using namespace std;int main()
{cout << "HelloWorld" << endl;return 0;
}

上述代码是最简单的代码,但麻雀虽小五脏俱全。

4.1 头文件

首先,跟C语言一样,C++的源码文件前面一般都会包含头文件的预处理语句:

#include <iostream>

C++的头文件的功能、预处理原理都与C语言无异,下面罗列它们不同与联系:

  1. C++的标准头文件无需后缀。
  2. C++可以接收C语言风格后缀的头文件(如#include <math.h>),但如有可能,要优先使用C++版本的头文件(如#include <cmath>),两者的内容基本是一样的,但后者中的标识符在标准名字空间 std 中均有声明(除了宏之外)。
  3. C++也接收新风格后缀(如*.hpp)。

下面是各种后缀的头文件举例:

#include <iostream> // c++标准头文件
#include <cmath>    // 在标准名字空间做了声明的改进版math.h
#include <unistd.h> // 无cunistd版头文件
#include <head.hpp> // *.hpp后缀头文件

4.2 名字空间

using namespace std;

上述语句是C语言没有的,其含义是使用名字空间std中的标识符。这里的名字空间是C++引入的一个新概念。名字空间本质上是自定义的作用域,目的是尽可能防止符号命名冲突。

比如,在名字空间 std 中,有如下符号:

  • cout
  • cin
  • cerr
  • string

由于这些符号(变量、函数、对象)是名字空间 std 中被声明的,因此它们的实际名称应该是:

  • std::cout
  • std::cin
  • std::cerr
  • std::string

在程序中如果我们不使用 using 语句来导入名字空间符号,那么就必须写这些符号的全名,如下所示:

#include <iostream>
int main(void)
{std::cout << "你好,C++!" << std::endl;
}

很显然,在正常的程序中,要逐一写所有符号的全名是很不方便的,因此一般会使用 using 语句来导入符号。

4.3 标准输入、输出

cout << "HelloWorld" << endl;

在上述示例代码中,可以看到输出字符串的方式跟C语言有很多的不同,虽然在c++中完全可以继续使用C语言的 printf() / scanf() 这一类函数,但是用标准输入输出流对象,一般而言会更加简便。

标准流对象
所谓的标准流对象,指的是coutcincerr
所谓对象,本质上就是C语言语境中的变量,只不过在面向对象的语境中,这些变量都是自带函数的,它们是名副其实的超级变量,因此为了与C语言的普通变量加以区分,在面向对象的编程语言中,通常将它们称为对象。

cout: 标准输出流对象,典型用法如下:
cout << 100;   // 输出整型数据
cout << 3.14;  // 输出浮点型数据
cout << "abcd";// 输出字符串数据cin: 标准输入流对象,典型用法如下:
int a;
double f;
string s;
cin >> a; // 从键盘接收一个整型数据放入变量a中
cin >> f; // 从键盘接收一个浮点型数据放入变量f中
cin >> s; // 从键盘接收一个字符串放入变量s中

可以明显看到:

  1. 使用流对象的优势在于,不需要关心操作数据的类型,流对象会自动识别不同的数据类型,也可以一次性快速处理,例如上述代码也可写成:
int a;
double f;
string s;// 一次性输出多种不同类型的数据
cout << 100 << 3.14 << "abcd";// 一次性输如多种不同类型的数据
cin >> a >> f >> s;

2.cerr的用法与cout是一样的,区别是cerr输出的时候不经过缓冲区直接输出,而cout需要经过行缓冲区。

3.输出换行符时,除了像C语言那样使用’\n’之外,也可以使用endl来表达:

// 以下语句都是等价的
cout << "HelloWorld\n";
cout << "HelloWorld" << '\n';
cout << "HelloWorld" << endl;

5. C++编译

C++程序要用对应的编译器g++,例如以上示例代码,其编译语句是:

gec@ubuntu:~$ g++ HelloWorld.cpp -o HelloWorld

当然,如果是针对开发板编译程序,要使用对应的交叉工具链来编译:

# 针对GEC6818平台:
gec@ubuntu:~$ arm-linux-g++ HelloWorld.cpp -o HelloWorld# 针对RockX平台:
gec@ubuntu:~$ aarch64-linux-gnu-g++ HelloWorld.cpp -o HelloWorld

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词