📅  最后修改于: 2023-12-03 15:14:25.598000             🧑  作者: Mango
C++是在C语言基础上进行扩充和改进而来的,它们有很多相似的地方,C++也兼容C语言的大部分语法和标准库。但是,C和C++之间仍然存在一些差异和不兼容性,本文将介绍其中的一些关键点。
C++引入了一种新的内置类型bool,表示布尔类型,取值只有true和false。在C语言中,使用int来表示布尔类型,其值只有0和1,但在C++中不允许将bool型赋值为非0或非1的整数。
// C++
bool a = true;
bool b = false;
int c = 2; //合法,c的值为2
bool d = 2; //错误,不能将整数赋值给bool型变量
C++ 支持 // 单行注释和 /* / 块注释,而C语言只支持 / */ 块注释。
// C++
int a = 1; // 这是单行注释
/*
这是
多行
注释
*/
int b = 2;
// C
int a = 1; /* 这是块注释 */
C++中增加了四种新的强制类型转换方式,即 const_cast、dynamic_cast、reinterpret_cast和static_cast。而在C语言中,只有一种强制类型转换方式,即使用强制类型转换运算符()。
// C++
int a = 1;
const int b = const_cast<const int&>(a); // 将a 转换成 const int类型
// C
int a = 1;
const int b = (const int)a; //将a转换成const int类型
在C语言中,struct类型的定义必须要写成struct和类型名称的组合,而在C++中,可以简写成类型名称。
// C++
struct Person {
string name;
int age;
};
//C
struct Person {
char name[10];
int age;
};
C++标准库的头文件扩展名为.h,而C语言的头文件扩展名为.h或者不带扩展名。
在C++中,使用bool类型需要包含头文件<bool.h>或者
// C++
#include <bool.h>
bool a = true;
//C
int a = 1;
C++允许函数重载,即定义多个同名函数,但是参数列表类型或个数不同。而C语言不支持函数重载。
// C++
int add(int a, int b) {return a + b;}
double add(double a, double b) {return a + b;}
// C
int add(int a, int b) {return a + b;}
int add(int a, int b, int c) {return a + b + c;} //改变参数数量,和类型
C和C++之间有很多差异和不兼容的地方,从语法到标准库都存在这一问题。而程序员在编写代码时需要深入了解两种语言之间的差异性,选择合适的语言来编写代码。