您现在的位置是:首页 >技术杂谈 >C++基本介绍网站首页技术杂谈
C++基本介绍
?1.C++基本介绍
?1.1 C++是什么
C++是一种通用的、高级的编程语言,它是C语言的扩展和改进版本。C++由Bjarne Stroustrup博士在20世纪80年代初开发,旨在为程序员提供更多的功能和工具,以便更轻松地编写复杂的软件程序。
拜一拜祖师爷,保佑在学习C++的路上少写bug
C++支持面向对象编程。面向对象编程是一种编程范式,通过将数据和操作封装在对象中,可以更好地组织和管理代码。这使得C++能够创建模块化、可重用和易于维护的程序。
此外,C++还提供了许多其他功能和特性,如模板、异常处理、多态等。这些功能使得C++成为一门功能强大且灵活的编程语言,被广泛应用于各个领域。
C++与C语言是有一定的渊源的,但是C#的C++并没有很大关系。C#是早期微软为了对标Java而问世的一款编程语言。
C++是在C语言的基础上补充拓展出来的,就好比是一个妈生的亲兄弟(姐妹)。而Java“借鉴”了C++的一些特性,然后在此基础上做出一些改变,自立门户,C++和Java就好比是堂兄弟(姐妹)。C#又“借鉴”了Java一些特性和概念,然后又在此基础上做出一些改变Java和C#也是属于堂兄弟(姐妹)关系。
?1.2 C++发展史
C++的发展史可以追溯到1979年,贝尔实验室的本贾尼等人试图分析Unix内核的时候,试图将内核模块化,于是在C 语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。随着时间的推移,这种新的语言逐渐发展壮大,并在1983年正式被命名为C++。C++继承了C语言的基本语法和功能,并引入了面向对象编程的特性,如类、继承和多态性。
C++历史版本:
版本 | 发布年份 | 内容 |
---|---|---|
C++98/C++03 | 1998/2003 | 最早的C++标准版本,包含了面向对象编程的基本特性、模板和STL(标准库)等功能。 |
C++11/C++0x | 2011 | 引入了许多重要的特性,如自动类型推断、Lambda表达式、并发编程支持、右值引用和移动语义等,以及对模板和标准库的改进。 |
C++14 | 2014 | 对C++11进行了一些修订和改进,增加了一些新特性和语法,如泛型lambda表达式、constexpr函数、二进制文字等。 |
C++17 | 2017 | 引入了结构化绑定、折叠表达式、内联变量、并行算法库、文件系统库等新特性,以及对C++14的改进和修正。 |
C++20 | 2020 | 引入了概念(Concepts)、模块(Modules)、协程(Coroutines)、三向比较运算符、范围for循环的初始化语句等重要特性,以及对C++17的改进和修正。 |
C++23 (预计) | 预计在2023年发布 | 预计将引入一些新特性和改进,如常规化的元编程、设计模式支持、纤程(Fibers)等。 |
当C++98定向之后,C++委员会就计划每隔5年更新一个大版本,03年正常更新了一次,如果按照计划,应该是在08年左右再更新一次。可是在05年的时候,C++委员会就发了公告,大概意思就是,可能搞不出大版本,只能小打小闹一下,然后就把这期间更新的叫C++0x。终于到了11年(时隔13年呐),新的标准终于更新了,也就是我们的C++11,这次的更新让不少人重新回到了C++,也一直沿用至今。但在这之后,一直没有很大的突破,当20年的时候,大家都很期待C++会有一个新的突破,可是会议结束之后,却未达到大家预期的效果。
目前C++23还在定制中,这从侧面也能看出来C++还是有一定的局限性的。
Java相比C++,有一个“氪金”的公司(Oracle),大概每半年就更新一次,这样的好处就是Java后期的生态可能会比C++好一点,但是这也对学习Java的人来说,是一个头疼的问题,因为更新太快了,可能学着学着,版本就换了。
C++现在虽然还是在发展,但是市面上主流使用的还是C++98和C++11,这些也够我们掉头发了,所以我们也不必担心,能把现有的玩明白,就很厉害啦。
由于C++是从C语言里面生长出来的,所以C++是兼容C语言的。
?2. C++的优势
?2.1 语言的使用广泛度
从排行榜可以看出来,C++依然是属于大头,对于学习C++来说还是有很大的优势。
- C++兼容C,学一门等于学两门,不亏;
- C++让你成为“黑客”,C++给予了程序员极大的控制力,允许直接操作内存和底层资源。在合法和道德的前提下,C++让你成为一个技术高手,能够创造出令人瞩目的产品(如:Linux操作系统、英雄联盟、浏览器、PS…哪些知名的软件是c++写的?)。
- C++学习十分有成就感!
虽然这些都不是很着调,但我们在学习之前,肯定要给自己打气,“工欲善其事必先稳心态”(原句:工欲善其事,必先利其器),人家“王婆婆”卖瓜之前还得先夸夸自己的瓜呢,更何况C++确实是个“好东西”。
C++具体的优势和特性,还得在今后的学习中,慢慢领悟。
?2.2 C++的应用领域
- 游戏开发:著名的游戏引擎Unity3D使用C++作为其核心引擎的开发语言。另外,著名的游戏《英雄联盟》和《CS》也是使用C++进行开发的。
- 嵌入式系统:无人机制造商DJI的飞控系统是用C++编写的。汽车电子领域中,自动驾驶系统和车载娱乐系统通常也使用C++进行开发。
- 科学计算和数值分析:开源库Eigen是一个用于线性代数计算的C++库,被广泛用于科学计算和数值分析任务。另外,CERN的粒子物理研究中使用的ROOT数据分析框架也是用C++编写的。
- 金融和高频交易:高频交易公司使用C++来开发快速而高效的交易系统。例如,金融公司Jane Street就是使用C++作为其主要交易系统的开发语言之一。
- 图形界面和桌面应用:跨平台的应用开发框架Qt是用C++编写的。许多知名的软件,如Adobe Photoshop、Autodesk Maya和Microsoft Office套件,也使用C++进行桌面应用程序的开发。
- 数据库系统:开源关系型数据库管理系统MySQL使用C++编写。另外,PostgreSQL、Oracle数据库等也在其代码中使用了C++。
?3. C++学习计划
网上常听闻C++是最难学的语言之一,这是属实的。《程序员》期刊2010年8期C++强大背后里面有提到:
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:
- 第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;
- 第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;
- 第三层次,深入了解C++:关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;
- 第四层次,研究C++:阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。
就本人现阶段而言,要是能学到第二层次,就已经很不错了。
现在市面上有很多公开的课程,找到适合自己口味的,跟着这些免费课程入门,在这期间加上一定的练习,多多总结,积极学习、消极学习、持续学习。不可操之过急,C++这门语言肯定是需要一定的积累的,不能被网上的“21天”系列迷惑。在有一定基础之后,可以看一些技术书籍,进一步提升自己的水平。
这篇文章是前辈左耳朵耗子——陈皓写的“21天教你学会C++”,来讨论当下的大环境及自己的经验。
可惜的是前辈本月13号晚“离开”了我们,博主几个月前还听老师谈起了这位前辈,跑去前辈的技术论坛学习。
希望前辈路走好!也希望朋友们注意身体,平安健康。
本期就分享到这里,我们下期再见,如果还有下期的话。