【C++】C++对C语言的关系,拓展及命名空间的使用
文章目录
- 📝C++简述
- C++融合了3种不同的编程方式:
- C++和C语言关系是啥呢?
- C++标准
- 🌠C++应用
- 🌠C++语言优点
- 第一个C++程序
- 🌠命名空间
- 🌠命名空间的使用
- 命名空间的定义
- 🌠怎么使用命名空间中的内容呢?
- 1. 直接使用完全限定名
- 2. 使用`using`声明
- 3. 使用`using`指令
- 4. 嵌套命名空间
- 使用注意事项
- 命名空间的作用域
📝C++简述
与C语言一样,C++也是在贝尔实验室诞生的,Bjarne Stroustrup于1979年首次推出,C++是一种高级编程语言,它是在C语言的基础上发展而来,融合了面向对象的思想。它的特点是高效、低级和面向对象。
在C++的发展历程中,最为重要的里程碑是C++11标准的发布。C++11版本增加了许多现代化的特性,例如类型推断、lambdas表达式、移动语义、多线程支持等,大大提高了C++的编程效率和效果。
C++被广泛应用于游戏开发、图形图像处理、嵌入式系统等领域。例如腾讯公司就广泛使用C++来开发游戏引擎、QQ客户端等产品。C++也是Linux内核和Windows系统的主要实现语言。
在编程界,C++已经有40多年的历史,尽管时代不断变迁,但C++依然是系统级和高性能领域的首选语言之一。它在各大编程语言排行榜上长期位居前茅,被众多科技巨头广泛应用。
C++融合了3种不同的编程方式:
- C语言代表的过程性语言
- C++在C语言基础上添加的类代表的面向对象语言。
- C++模板支持的泛型编程。
C++和C语言关系是啥呢?
C++语言是在C语言基础上,添加了面向对象,模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。
注意:C语言和C++并不是对立的竞争关系:
(图片来源网络,侵删)C++是C语言的加强,是一种更好的C语言。
C++是以C语言为基础的,并且完全兼容C语言的特性。
C++标准
这里是关于C++程序可移植性的标准:
一、是否需要修改代码
如果一个C++程序满足以下条件,则在重新编译后可以在新平台直接运行,无需修改源代码:
-
程序只调用标准C++语言元素和标准库功能,不依赖任何特定平台的库或API。
(图片来源网络,侵删) -
程序不直接访问硬件,不依赖特定的指令集或CPU架构。
-
程序遵循当前ISO标准的C++语言规范和标准库定义。
二、实现可移植性的两个关键点
-
硬件依赖性:如果程序直接访问硬件或依赖特定的指令集,则不具有良好的移植性。
-
语言实现的一致性:不同平台下编译器对C++标准的实现应保持一致,以确保可移植性。
三、C++标准的制定与发展
-
ANSI和ISO联合委员会从1990年开始制定统一的C++标准。
-
最早的标准ISO/IEC 14882:1998为C++奠定了基础。
-
后续标准不断修订和增强语言功能,但保持向下兼容。
-
标准库提供跨平台的接口,有助于提高程序的可移植性。
-
如果遵循标准,理论上程序可以在任何支持该标准的平台上通过重新编译直接运行。
以上就是关于C++程序可移植性的一些基本标准和原则。如果满足这些条件,则可以实现跨平台良好的可移植性。
如果你想了解C++标准有关版本,可以看看以下:
-
C++98标准:发布于1998年,这是C++语言的第一个正式标准版本。
-
C++03标准:发布于2003年,主要是对C++98标准的一些细微修改和补充。
-
C++11标准:发布于2011年,这是一个重要的标准版本,增加了许多新的语言特性,如auto类型推导、lambda表达式、智能指针等。
-
C++14标准:发布于2014年,基于C++11标准进行了一些增强,如常量表达式、二进制字面量等。
-
C++17标准:发布于2017年,主要新增了模块化支持、 paralle programming支持等新特性。
-
C++20标准:发布于2020年,主要新增了范围for循环、概括模板、可变参数模板等功能。
…
🌠C++应用
腾讯超级喜欢C++开发? 作为互联网巨头之一的腾讯,一向都是众多游戏公司和科技企业的风向标
腾讯的历史原因 1998年,腾讯成立之初主要开发BBS论坛系统,当时常用的开发语言有PHP、ASP等脚本语言以及C/C++两种编程语言。由于需要开发游戏等产品,出于性能考虑,腾讯最初选择了C/C++来开发。
随着业务的扩展,腾讯游戏业务迅速发展,需要支持3D图形等游戏引擎,这就决定了必须选择C/C++这种低级语言来开发。从此,C/C++成为腾讯主打的技术方向。
腾讯发展的必然选择 经过20多年的发展,腾讯游戏和IT技术团队已经有数以万计的C/C++开发人员,在游戏引擎和系统开发等领域有着非常深厚的技术积累。
目前腾讯的QQ客户端、微信公众号平台等核心产品都是基于C/C++技术研发的。从游戏引擎、多媒体处理到操作系统开发,C/C++作为系统级语言的优势很明显。因此,C/C++成为腾讯不二选择。
🌠C++语言优点
C++有8大特性,也就是它的8大优点:
⽂件使⽤⽅式 含义 跨平台/可移植性 跨平台是C++语言的核心优势,在设计之初C++就很注重可移植性和跨平台性,因为C++的运行不依赖任何虚拟机,编译生成的可执行文件可以直接在任何支持该平台的操作系统上运行,省去了大量的代码重复编写时间。 安全性 C++提供了面向对象、模板和异常等机制,可以有效避免资源泄漏和错误的访问,使程序更安全可靠。 面向对象 C++是完全的面向对象语言,非常适合大型软件的设计和开发。 简单性 C++比C语言增加了更多面向对象的特性,如类、继承、重载等,在保留C语言简单易用的同时提高了程序的可维护性。 高性能 C++的性能一直处于领先地位,尤其是在游戏、图形和嵌入式系统等领域。 分布式 C++支持网络编程和远程调用,可以开发分布式系统。 多线程 C++11标准增加了多线程支持,可以方便高效地开发多线程程序。 健壮性 C++提供智能指针、异常处理等机制,减少内存泄漏和崩溃的可能性,使程序更健壮可靠。 第一个C++程序
#include using namespace std;//使用std命名空间 int main(int argc , char *argv[]) { int a; a=10; cout void func() { // func定义1 } } namespace space2 { void func() { // func定义2 } } // func定义1 } void func(int x) { // func定义2 } public: void func() {/*func1定义*/} }; class B { public: void func() {/*func2定义*/} }; // 定义变量、函数、类等 } int myVariable = 0; void myFunction() { // 函数实现 } } int outerVar = 10; // 嵌套命名空间 namespace nestedNamespace { void nestedFunction() { std::cout void inlineFunction() { std::cout void anonymousFunction() { std::cout // 访问外层命名空间变量 std::cout void myFunction() { // 函数实现 std::cout MyNamespace::myFunction(); // 调用函数 int value = MyNamespace::myVariable; // 访问变量 std::cout myFunction(); // 现在可以直接调用函数,无需命名空间前缀 int value = myVariable; // 直接访问变量 std::cout myFunction(); // 直接调用,无需前缀 int value = myVariable; // 直接访问 std::cout namespace Inner { void innerFunction() { // 函数实现 std::cout void innerFunction() { // 实现 std::cout Outer::Inner::innerFunction(); // 直接调用嵌套命名空间中的函数 return 0; } innerFunction(); // 直接调用 return 0; } int a = 10; int b = 66; int c = 108; } namespace B { int a = 10; int b = 6; int c = 109; } int a = 36; using namespace A; using namespace B; int main() { //std::cout
-
还没有评论,来说两句吧...