C过渡C++
对比来说C++可以提高程序的抽象性和生产力,JAVA舍弃了灵活性和效率增加了生产力和抽象能力,C语音的生产力和抽象能力则不如C++和JAVA。
C++基本属于一个所有语音的集合体,其它语音包含的特有能力都会被C++吸收进去。
C语音属于过程式编程,C++支持过程式又不仅仅局限于过程式还支持基于对象(面向对象),泛型,数据抽象式,模板源,函数式等编程方式。
值语义:对象允许被复制;
对象语义:所面向的对象不允许被复制,只允许有一个对象存在。
C++还属于一个正在发展的语言,新增加的C++11标准就增加了许多可以提高生产力的东西。
在C语言中使用bool类型的话需要增加一个stdbool.h的头文件,所有在C语言中的bool是一个替代品(0为FALSE,TRUE为1),而在C++中则原生支持bool类型,0为false非0为true。
在程序中任何一个bool的变形基本都属于非原生形式,只有bool纯小写形式才属于原生bool类型。
在C++中只有bool这种原生类型才是安全的,其它各种变种都可能有危险。
**域运算符**
文件名的后缀为.cpp的话代表的是.C plus plus;
如果后缀为.C的话会使用C编译器来编译程序,为.cpp的话会使用C++编译器来编译程序。
#include<iostream>//.h后缀名只做区分使用,C++是从C语言发展而来,如果带.h或者头文件名前面加了c的
//话就代表是从C语言继承来的。使用效果一样,但是头文件名前加了c的话表示还符合C++标准。
std::cout<<num;//输出变量num不需要占位符。
std::cout<<<num+::num+poedu::num;//第一个num代表的是当前函数里面的变量num,第二个代表的是全局变
//量,第三个代表的是poedu这个命名空间里的变量。
return 0;
namespace poedu //自定义的poedu的命名空间
{
intnum=20;
}
int *pnum=newint(100);//分配一个int类型并且把值设置为100
//在程序中new一定是和delete对应的。
在C++中new和delete是一个运算符而不是一个函数,而在C语言中malloc和ferr是一个函数。
Overloaded(重载)
void MyCout(int num)
{
printf("%d",num);
}
void MyCout(char c)
{
printf("%c",c);
}
//这样的两个相同的函数名在C语言中是不允许的,会报错。但是在C++中是允许的,不过参数必须不同,这种属于重载。
int main()
{
int num=100;
char c='c';
MuCout(num);//程序会自动查找与变量类型匹配的函数。
MyCout(c);//程序会记录符号表,变量类型,空间大小,解析方式等。
return 0;
}
//在C++中的cout可以不使用占位符而可以正常输出基本就相当于是通过这种方式来实现的。