C++的写法
区别:
1、C通过标准输入输出函数printf完成输出,C++通过cout类完成输出
2、iostream.h是老版本的C++,现在的C++替换成不使用后缀.h的头文件
3、命名空间用来解决标识符冲突问题,使用某个命名空间就可以直接使用它定义的标识符
拓展:
1、C++依然可以使用C的库函数
2、using namespace std;是表明使用 C++的标准程序库命名空间,可以省略,但是cout需要加命名空间前缀
PS:std加两个冒号
using namespace std;语句可以写在函数体内(略有区别)
还可以直接引入cout
std命名空间里还有一个endl的换行标识符,可以代替'\n'的换行转义字符
面向对象编程思想
并非代替结构化编程思想,主要有抽象、封装、继承、多态
1、抽象:把现实生活中的事物的属性、行为提取出来的过程,比如一辆汽车有品牌、车型、颜色、价格、车牌等等,这些是状态,属于静态的属性。车还具有启动、运行、转向、刹车等等行为,这个属于动态的行为。当然,事务的属性应该是无穷无尽的,把系统关心的静态属性和动态行为提取出来,就形成了一“类”事务——这就是类的概念。静态属性称为成员变量,动态行为称为成员函数。当然,类是无法实现具体动作的,需要实例化,比如张三去上课了等等,类的实例化称为对象。类与对象则是模型与产品的关系,模型提供共性,产品又在共性的基础上具有自己的个性。比如人都有姓名,张三和李四的姓名则是他们自己的个性了。
2、封装:结构化编程遇到的最大问题是数据的种类越来越多,复杂性越来越高。任由功能模块对数据进行无限制的处理,会导致功能模块设计越来越复杂。数据的封装限制数据使用的范围和权限,降低复杂数据对功能模块的影响,举一个简单的例子:去商场买东西付账的时候,你不会直接把钱包给营业员,而是自己来操作。所以钱包里的钱出现问题可能性最大的是自己的操作失误。
3、继承:在抽象里,有了类的概念,当然离不开继承,现实生活中的事务本能就具有继承的层次:人-》学生-》大学生等等,一层一层地继承父类的属性和行为,又开发出自己的新的属性和行为
4、多态:具体而言就是同一类的对象可以有不同的行为,这应该是一个不容易理解的概念。
A、先解决一个问题:对于一个派生类(继承者)的对象,能不能视为一个父类的对象呢?当然可以,一个大学生,当然是学生,也当然是人!所以,把派生类提升一级那么就可以理解了,张三小学生(小学生也是学生的派生类),李四大学生,两个学生都学习,那么他们的行为就可以不同了。
B、还有一个更头疼的问题:为什么要这样,或者说这样做有什么好处?还是举个例子:U盘、USB的键盘、鼠标都可以理解为USB设备的派生类,在电脑上提供了一个USB设备的统一接口(把:U盘、USB的键盘、鼠标等等都看成父类USB设备),这样与不同派生类对象进行不同方式的的数据交换。(这个例子属于接口的概念,与多态的概念类似,不妥)
总之,面向对象编程是在结构化编程的思想上发展起来的,并非进行完全替换!最大的区别是结构化编程从系统功能的着手,更注重动态的行为(算法),而面向对象思想则从事物的特征(数据结构)出发,更接近人们解决问题是思路。