C语言和C++的一些区别
C++在语法上比C语言有了一些改进
- C语言的变量申明必须放在函数最上面,C++没有这个限制
C语言的结构体不能直接当数据类型使用,必须加上struct关键字,而C++没有限制
- C语言的结构体使用:
struct student { char* name; int age; }; int main() { struct student stu = {0}; //使用结构体时必须要加上struct stu.name = "Bob"; stu.age = 18; return 0; }
- C++的结构体使用
student stu = {0}; //使用结构体时直接当成数据类型即可
- C语言无法使用引用,C++加入了引用(即“&+变量”式的指针)机制
- C++加入了bool型数据类型,C语言是没有的
- C++加入了命名空间 using namespace
定义域,例如:
std::cout<<name;
C++ 加入了函数重载机制,允许使用同名但不同参数列表、不同返货类型的多个函数定义
- C语言中没有默认参数,在使用默认参数时要注意二义性问题,尽量不要在设置了默认参数时使用函数重载
C++ 中加入了初始化语法,例如
int a(5);
,其实这个是把a初始化为5,等价于int a = 5;
,类似的,动态内存申请也可以这样初始化,例如int* a = new int(5); //申请4字节的int型内存空间,并将其初始化为5
而对于new动态内存申请,跟多的用到的是[],l例如
int* a = new int[5]; //申请5个int型内存空间(20字节),相当于一个有5个元素的int型数组
C++ 中struct结构体升级变得和类类似,可以拥有成员函数,析构函数等,但成员属性都是public。
* 注:不过,本质上struct还是原来的结构体(和class不一样),本身没用成员函数,只是C++的编译器在编译时自动把你写的成员函数 编译成外部函数 并通过 引用 *实现“成员函数”的功能,也就是说struct和class有本质的区别,struct中没有class中的this指针。
结构体中的成员函数只是为了提高编程效率,给程序员减轻一些负担而产生的一种优化。- 在C++ 中inline内联函数代替C语言中的宏函数