曾有人戏谑的说,C++作为一种面向对象的语言,名字起的不好,为什么呢?用c的
语法来看,++ 操作符是post ++ 。
1类型增强
1.1类型检查更严格
比如,把一个const类型的指针赋给非const 类型的指针。c 语言中可以通的过,但是在c++中则编不过去。
int main()
{
const int a = 100;
int b = a;
const int *pa = &a;
int *pb = pa;
return 0;
}
1.2布尔类型(bool)
c语言的逻辑真假用0和非0来表示。而c++中有了具体的类型。
int main()
{
bool flag = true;
if(flag != false)
{
printf("i know bool type now\n");
}
printf("bool size = %d\n",sizeof(bool));
return 0;
}
1.3真正的枚举(enum)
c语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而c++中枚举变量, 只能用被枚举出来的元素初始化。
enum season {SPR,SUM,AUT,WIN};
int main()
{
enum season s = SPR;
s = 0;
return 0;
}
error
D:\WorkSpace\qtcpp\1\main.cpp:10: error: invalid conversion from 'int' to 'season' [-fpermissive]
1.4表达式的值可被赋值
c语言中表达式通常不能作为左值的,即不可被赋值,c++中某些表达式是可以赋值的。比如:
#include <iostream>
using namespace std;
int main(void)
{
int a,b = 5;
(a = b) = 10;
cout<<"a = "<<a<<" b = "<<b<<endl;
(a<b? a:b) = 200;
cout<<"a = "<<a<<" b = "<<b<<endl;
return 0;
}