1.头文件的区别
C++特有的头文件#include <iostream> //没有.h 当然可以把C语言理解为C++的子集,C++可以兼容C语言的头文件。例如:#include <stdio.h>,另外在C++中C语言的头文件也可以写成#include <cstdio>,就是省略.h,在前面加c。
2.命名空间的知识
C语言中没有命名空间。了解C++的命名空间只需要理解这两点,1.如何创建一个命名空间 2.如何访问数据 模板:namespace 空间名{函数名;变量名;结构体;类等数据}
命名空间的好处是当需要完成大项目的时候,分工合作完成不同模块的内容时,预防变量名重名的发生,不同的命名空间可以有相同的变量名,这就是为什么C++比C语言效率更高的原因之一。接下来就是讨论该如何访问命名空间里的数据呢?
比如访问student1中的age,则用student1::age访问,访问函数时,student1::print();访问其他的类似;
当然这里需要额外补充一下::运算符的作用,它是C++中特有的,也成为作用域分辨符。此分辨符还有一种作用:标识当前函数或者变量是全局的。例如:
其实空间名::是可以省略的,这就需要在调用某空间内的数据之前加上一句 using namespace 空间名;然后调用数据时就不用加空间名:: 但是需要注意的是,比如有两个命名空间,里面存在相同名字变量或者函数等,在分别调用之前都加了 using namespace 空间名;运行时依然会报错,产生二义性,编译器不知道该调用哪个命名空间里面的数据或者函数,这就必须要加上空间名:: 调用,当然两个命名空间里面不同名称的变量或者函数仍然可以用上述方法省略空间名:: 。
想必大家也已经看到每次开头都有这么一句话 using namespace std; 讲到这里大家也许就已经明白了,C++特有的输入cin特有的输出cout特有的换行endl等都定义在命名空间std中,如果不加 using namespace std; 声明,就要在使用这些功能时前面加上std::,例如std::cout<<a<<std::endl;
3.函数思想
1.函数重载 C++允许同名函数存在(注意:函数重载与返回值一点毛线关系都没有,只与函数参数有关) 1.函数参数数目不同 2.函数参数类型不同 3.函数参数顺序不同 在调用函数func时,编译系统会根据里面的传的实参来自动匹配正确(相匹配)的函数;
2.函数缺省 C++里面允许给形参赋值 (注意:缺省有一个规则,必须从左往右连续缺省)
下面是错误示范:
4.C++标准输入输出
大家根据例子自行理解,动手写代码测试,这里不再过多讲解
5.命名空间先声明后定义写法
6.C++起别名
C语言用typedef起别名,C++用using起别名,using可以为类模板起别名,但是typedef不可以。 typedef int INT; 相当于 using INT=int; typedef int Array[3]; 相当于 using Array=int[3]; typedef struct MM{char name[20]; int age;}MM 相当于using MM=struct MM; 所以可以总结为 using 别名=要起别名的类型
由于字数原因,请大家翻看我的作品一篇讲清C++与C的区别(二)完整体会它们的不同。