1、C++的三大法宝
- 继承了C的面向过程特性
- C++面向对象编程
- C++模板的泛型编程
(C和C++的发展历史作者在此就不再过多追叙,读者可以自行去网上阅读搜索)
C++的面向过程编程
C所遵循的旧的理念,一般来说,计算机语言要处理两个概念——数据和算法。数据是程序使用和处理的信息,而算法是程序使用的方法。面向过程强调的是编程的算法方面。从慨念上说,过程化编程首先确定计算机应采取的操作,然后使用编程语言来实现这些操作。程序命令计算机按一系列流程生成特定的结果,就像菜谱指定了厨师做蛋糕时应遵循的一系列步骤一样。
早期的程序语言 (如FORTRAN 和BASIC)都会遇到组织方面的问题。例如,程序经常使用分支语句,根据某种测试的结果,执行一组或另一组指令。很多旧式程序的执行路径很混乱(被称为“意大利面条式编程”,儿乎不可能通过阅谈程序来理解它。结构化编程方法便应运而生。如大家熟悉的(for 循环语句,do while ,if else)就是结构化编程。
另一个原则则是自顶向下原则。其理念就是好比你要搬家,你不可能一下子把家搬完,你可以把它分成各个小任务,比如先搬客厅,再厨房,最后卧室。同样,当你搬客厅时,你又可以分成更小的任务,比如先搬茶几,再电视,再空调。形成一个自己的小人物序列,按照计划从头到脚执行就是自顶向下。C语言鼓励程序员开发程序单元(函数)来表示各个任务模块。
C++的面向对象OOP编程
简单些理解,就是将数据和方法相结合以创造出可重用的代码,进而减少大量不必要的重复工作。同时,可以调用市面上一些厂商给提前创建好的类库进行开发。这也正是C++的优点:可以方便地重用和修改现有的、经过仔细测试的代码。
泛型编程(genericprogamming)
是C++支撑的另一种编程模式。它与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单。不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型。它们的侧重点不间。OOP 是一个管理大型项目的工具。而泛型编程提供了执行常见任务(如对数据排序或合并链表)的工具。
C++的数据表示
有多种类型-—整数、小数、字符、字符串、用户定义的、由多种类型维成的复合结构。例如,要对不同类型的数据进行排序,通常必须为每种类型创建一个排序函数。泛型编程需要对语言进行护展,以便可以只编写一个泛型(即不是特定类型的)函数,并将其用于各种实际类型。C++模板提供了完成这种任务的桃制。
众所周知,C++有很多特性,比如目前的C++11,C++17等,其实就是ISO标准委员会,为了很好的迎合C++语言程序的可靠性,所统一规定的语言标准,就好比比赛的规则,他在发展,自然也就在更新。
2、编程步骤
如上图所示,编程的从编写源代码的开始,到最后转换为可执行的代码,才可以被计算机正确的识别与处理。
提示:有时,编译器在不完全地构建程序后将出现混乱,它显示无法改正的、无意义的错误消息。在这种情况下,可以选择Build All,重新编译整个程序,以清除这些错误消息。遗憾的是,这种情况和那些更常见的情况(即错误消息只是看上去无意义,实际上有意义)很难区分。
3、C++编程
(编程细节就不一点点讲了,因为全总结的话会过于繁琐,这里仅总结一些重要细节要点)
- C++区分大小写;
- 简易大家在编写代码的时候保持良好的代码书写与注释习惯,对未来工作很有帮助,养成习惯;
- 大部分的程序都需要main()函数,但是也有些特例。比如动态链接库(DLL)模块,因为他不是独立的程序,所以不需要main()函数。还有一些用于专用环境的程序,如机器人控制芯片,也可能不需要main函数。
名称空间支持:
是C++的一项新特性,可能有很多新手程序员在校就没搞清楚为什么要有这个using namespace std;在此特做出解释。比如你未来你是大厂程序员,你可能就会整合很多不同厂商提供的产品代码。假设两边都有个函数名叫niubi(),但是两个函数里面的代码也不一样,这时候你编译器就不知道该选哪一边的了。这就是名称空间的出现原因。厂商将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出想使用哪个厂商的产品。然而,多数用户并不喜欢将引入名称空间之前的代码(使用iostream:h 和cout)转换为名称空间代码(使用iostream 和std:cout),除非他们可以不费力地完成这种转换。于是,using编译指令应运而生。上面的代码表明,可以使用std名称空间中定义的名称,而不必使用std前缀。但是同样建议大家不要偷懒,还是减少使用using namespace std;因为等到真处理大型文件多了,可能就会有些潜在的危机。推荐使用using std::cout,用什么对应调用什么。