当前位置:   article > 正文

1.C++语言介绍——《跟老吕学C++》_c .laoliudao

c .laoliudao

1.C++语言介绍——《跟老吕学C++》

C++语言介绍

一、C++的简介


C++,全称是C Plus Plus。老吕比较喜欢叫它C加加。

C++是一种通用的、过程式的计算机编程语言,支持多种编程范式,包括面向对象编程、泛型编程和过程化编程。它被认为是一种中级语言,因为它综合了高级语言和低级语言的特点。C++由Bjarne Stroustrup于1983年作为C语言的增强版而创建,最初被命名为“C with Classes”。

  • C++是C语言的继承;
  • C++是是编译式的;
  • C++是通用的、大小写敏感的、不规则的编程语言;
  • C++是一种中级语言,它综合了高级语言和低级语言的特点;
  • C++是一种静态数据类型检查的;
  • C++支持多范型的通用程序设计语言;
  • C++能够支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格;
  • C++的编程领域众广,几乎可以创建任何类型的程序:游戏、设备驱动程序、HPC、云、桌面、嵌入式和移动应用等,甚至用于其他编程语言的库和编译器也使用C++编写;
  • C++拥有计算机高效运行的实用性特征;
  • C++提高了大规模程序的编程质量与程序设计语言的问题描述能力。



1.C++语言介绍——《跟老吕学C++》



二、C++的特点

C++是一种静态类型的语言,具有编译时类型检查、变量作用域规则和参数传递机制。它支持多种数据类型,包括内置类型和用户定义的类型(如类、结构体、联合体等)。C++的运算符重载和函数重载功能使得代码更加灵活和可重用。

三、C++的面向对象编程

C++的面向对象编程特性是其最重要的特点之一。它支持封装、继承和多态等面向对象编程的基本概念。通过封装,可以将数据和相关操作封装在一起,形成一个独立的对象。通过继承,可以创建新的类(派生类),继承已有类(基类)的属性和方法。多态则允许在运行时确定调用哪个类的成员函数。

四、C++发展历程


1970年,AT&T贝尔实验室的工作人员D.Ritchie和K.Thompson共同研发了C语言。研制C语言的初衷是用它编写UNIX系统程序,因此,实际上C语言是UNIX的“副产品”。

1971年,瑞士联邦技术学院N.Wirth教授发明了第一个结构化的编程语言Pascal。

20世纪70年代中期,本贾尼·斯特劳斯特卢普在剑桥大学计算机中心工作。斯特劳斯特卢普希望开发一个既要编程简单、正确可靠,又要运行高效、可移植的计算机程序设计语言。而以C语言为背景,以Simula思想为基础的语言,正好符合斯特劳斯特卢普的初衷和设想。

1979年,本贾尼·斯特劳斯特卢普到了AT&T贝尔实验室,开始从事将C改良为带类的C(C with classes)的工作。、1983年,该语言被正式命名为C++。

1985年、1990年和1994年,C++先后进行3次主要修订。
C++的标准化工作于1989年开始 ,并成立了一个ANSI和ISO(International Standards Organization)国际标准化组织的联合标准化委员会。

1994年1月25曰,联合标准化委员会提出了第一个标准化草案。在该草案中,委员会在保持斯特劳斯特卢普最初定义的所有特征的同时,还增加了部分新特征。
在完成C++标准化的第一个草案后不久,亚历山大·斯特潘诺夫(Alexander Stepanov)创建了标准模板库(Standard Template Library,STL)。在通过了标准化第一个草案之后,联合标准化委员会投票并通过了将STL包含到C++标准中的提议。STL对C++的扩展超出了C++的最初定义范围。虽然在标准中增加STL是个很重要的决定,但也因此延缓了C++标准化的进程。

1997年11月14日,联合标准化委员会通过了该标准的最终草案。

1998年,C++的ANSI/IS0标准被投入使用。



1.C++语言介绍——《跟老吕学C++》

五、C++四大特性


1. 支持数据封装和数据隐藏


封装----事物的封闭性

在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。



2. 抽象


抽象性–物以类聚

C++抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。它是依赖于接口和实现分离的编程(设计)技术。C++类为数据抽象提供了可能,它们向外界提供了大量用于操作对象数据的公共方法,外界实际上并不清楚类的内部实现。抽象有两个重要的优势:类的内部受到保护,不会因无意的用户级错误导致对象状态受损;类实现可能随着时间的推移而发生变化,以便应对不断变化的需求,或者应对那些要求不改变用户级代码的错误报告。



3. 支持继承和重用


继承----事物的相似性

在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。



4. 支持多态性


多态----事物的多样性

采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。

继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。



六、C++语言工作原理


C++语言的程序开发环境,为了方便测试,将调试环境做成了解释型。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。

开发C++应用程序,需要经过编写源程序、编译、连接程序生成可执行程序、运行程序四个步骤。生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序编写正确,那么通常只需按一个功能键,即可完成该过程。

第一步对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);如果该步骤成功执行,下一步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。例如,一个C++库中包含标准的平方根函数sqrt,不必亲自计算平方根。C++库中还包含一些子程序,它们把数据发送到显示器,并知道如何读写硬盘上的数据文件。



七、C++的泛型编程

C++的模板机制支持泛型编程,即编写与类型无关的代码。通过模板,可以编写一种通用的算法或数据结构,使其能够处理多种数据类型。这大大提高了代码的可重用性和灵活性。

八、C++的性能优势

C++是一种高性能的编程语言,可以直接操作内存和硬件资源。这使得C++在需要高性能的应用场景(如系统级编程、游戏开发、嵌入式系统等)中具有优势。此外,C++还支持底层硬件操作,如位操作和内存管理,使得开发者能够更直接地控制程序的执行效率。

九、C++的跨平台性

C++是一种跨平台的编程语言,可以在多种操作系统和硬件平台上运行。这得益于C++的标准化工作以及编译器和库的支持。通过编写符合C++标准的代码,可以确保程序在不同平台上的可移植性和兼容性。

十、C++语言标准


自C++的ANSI/IS0标准投用以来,共进行过5次更新。

发布时间通称备注
2020C++20第六个C++标准
2017C++17第五个C++标准
2017coroutines TS协程库扩展
2017ranges TS提供范围机制
2017library fundamentals TS标准库扩展
2016concurrency TS用于并发计算的扩展
2015concepts TS概念库,用于优化编译期信息
2015TM TS事务性内存操作
2015parallelism TS用于并行计算的扩展
2015filesystem TS文件系统
2014C++14第四个C++标准
2011-十进制浮点数扩展
2011C++11第三个C++标准
2010-数学函数扩展
2007C++TR1C++技术报告:库扩展
2006-C++性能技术报告
2003C++03第二个C++标准
1998C++98第一个C++标准



十一、C++标准库


标准的 C++ 由三个重要部分组成:

  • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
  • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
  • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。



十二、C++的应用领域

C++广泛应用于各种领域,包括系统软件、游戏开发、图形界面开发、嵌入式系统、网络编程等。许多著名的软件和游戏都是使用C++编写的,如Microsoft的Windows操作系统、Adobe的Photoshop图像处理软件以及暴雪娱乐的《魔兽世界》游戏等。

十三、C++的学习曲线

C++的学习曲线相对陡峭,需要掌握较多的概念和语法规则。然而,一旦掌握了C++的基础知识,就可以开发出高效、灵活且可移植的代码。因此,对于有志于成为优秀程序员的开发者来说,学习C++是非常值得的。

十四、C++的社区支持

C++拥有庞大的开发者社区和丰富的资源支持。有许多开源项目、库和工具可供使用,这有助于加快开发进程和提高代码质量。此外,C++社区还提供了许多学习资源和教程,帮助开发者更好地掌握C++编程技术。

十五、C++的未来展望

随着技术的不断发展和编程需求的日益复杂,C++作为一种成熟的编程语言,依然保持着旺盛的生命力,并不断演进以满足新的编程挑战。在未来,C++可能会在以下几个方向上有所突破和发展:

1. 并发与并行编程

随着多核处理器和分布式系统的普及,并发与并行编程变得越来越重要。C++社区正在积极研究和开发新的并发编程模型和工具,以简化并发编程的复杂性,提高程序的性能和响应速度。

2. 模块化与组件化

随着软件规模的扩大和复杂性的增加,模块化与组件化成为提高软件可维护性和可扩展性的重要手段。C++可能会引入更多的模块化编程技术和工具,以支持更细粒度的代码组织和复用。

3. 安全性与可靠性

安全性与可靠性一直是编程领域的重要议题。C++作为一种静态类型的语言,具有编译时类型检查和严格的语法规则,这有助于减少程序中的错误和漏洞。未来,C++可能会进一步加强其安全性和可靠性特性,以应对日益复杂的网络环境和安全威胁。

4. 跨领域应用

除了传统的系统软件、游戏开发和嵌入式系统等领域外,C++还可能在更多领域得到应用。例如,随着人工智能和大数据技术的兴起,C++可能会成为这些领域的重要编程语言之一。此外,随着物联网和云计算等技术的普及,C++也可能会在更多跨领域应用中发挥重要作用。

十六、如何学习C++

对于初学者来说,学习C++需要掌握一定的编程基础知识和学习方法。以下是一些建议:

1. 从基础语法开始学习

掌握C++的基础语法是学习C++的第一步。建议从变量、数据类型、运算符、控制结构等基础概念开始学习,逐步深入到函数、指针、数组等更高级的主题。

2. 理解面向对象编程思想

面向对象编程是C++的重要特性之一。建议在学习C++的过程中深入理解封装、继承和多态等面向对象编程的基本概念,并尝试编写一些简单的面向对象程序来加深理解。

3. 多做练习和项目实践

编程是一门实践性很强的学科。建议在学习C++的过程中多做练习和项目实践,通过实践来巩固所学知识并提高编程能力。可以参加一些在线编程竞赛或参与开源项目的开发来锻炼自己的编程能力。

4. 寻求社区支持和资源

C++拥有庞大的开发者社区和丰富的资源支持。建议在学习C++的过程中积极寻求社区支持和资源,如参加在线论坛、阅读技术博客、观看教学视频等。这些资源可以帮助你更好地理解C++编程技术并解决学习中遇到的问题。

十七、总结

C++作为一种功能强大、灵活且高效的编程语言,在各个领域都有着广泛的应用。虽然学习曲线较陡峭,但只要掌握了C++的基础知识并不断努力实践,就可以开发出高质量、高性能的代码。未来,C++还将在并发与并行编程、模块化与组件化、安全性与可靠性以及跨领域应用等方面不断演进和发展。因此,对于希望成为一名优秀程序员的开发者来说,学习C++是非常必要的。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/870625
推荐阅读
相关标签
  

闽ICP备14008679号