C++对C语言的增强
1、全局变量检测增强
C语言代码:
int a = 10; //赋值,当做定义
int a; //没有赋值,当做声明
int main(){
printf("a:%d\n",a);
return EXIT_SUCCESS;
}
此代码在c++下编译失败,在c下编译通过.
2、函数检测增强 ,参数类型增强,返回值检测增强,函数调用参数检测增强
C语言代码:
int space(w, h) // 形参没写类型;
{
} // 没有返回值
void test02()
{
space(10, 10, 10); //形参与实参数量没有对应
}
此代码在c++下编译失败,在c下编译通过.
3、类型转换检测增强
在C++,不同类型的变量一般是不能直接赋值的,需要相应的强转。
C语言代码:
char * p = malloc(sizeof(64)); //malloc返回值是void*
C++代码:
char * p = (char*)malloc(sizeof(64)); //malloc返回值是void*,加上强转
4、struct类型加强
4.1、c中定义结构体变量需要加上struct关键字,c++不需要。
4.2、c中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量,也可以定义成员函数。
C++代码:
struct Person {
int m_Age;
void plusAge() {
m_Age++;
}; //c++中struct可以加函数
};
void test04() {
Person p1; //使用时候可以不加struct关键字
p1.m_Age = 10;
p1.plusAge();
cout << p1.m_Age << endl;
}
5、 bool类型增强 C语言中没有bool类型
5.1、作用:布尔数据类型代表真或假的值
5.2、bool类型只有两个值:
true --- 真(本质是1)
false --- 假(本质是0)
注:给bool类型赋值时,非0值会自动转换为true(1),0值会自动转换false(0)
5.3、bool类型占==1个字节==大小**
C++代码:
int main() {
bool flag = true;
cout << flag << endl; // 1
flag = false;
cout << flag << endl; // 0
flag = 100;
//bool类型 非0的值 转为 1 ,0就转为0
cout << flag << endl;
cout << "size of bool = " << sizeof(bool) << endl; //1
system("pause");
return 0;
}
[c语言中的bool类型]
c语言中也有bool类型,在c99标准之前是没有bool关键字,c99标准已经有bool类型,包含头文件stdbool.h,就可以使用和c++一样的bool类型。
6、三目运算符增强
6.1、c语言三目运算表达式返回值为数据值,不能赋值。
void test06()
{
int a = 10;
int b = 20;
printf("ret = %d \n", a > b ? a : b);
//a > b ? a : b = 100; // 20 = 100 C语言返回的是值
}
6.2、c++语言三目运算表达式返回值为变量本身(引用),可以赋值。
void test06() {
int a = 10;
int b = 20;
cout << "ret = " << (a < b ? a : b) << endl;
(a < b ? a : b) = 100; //b = 100 C++中返回的是变量
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
由于C/C++中的const的内容过多,我放置下篇文章中了。