C与C++的区别
小编今天来分享一下在初接触C与C++后感受到的不同
面向对象和面向过程
1)C语言的面向过程
面向过程的编程注重解决问题的步骤,往往都是将功能函数逐级实现后依次调用
2)C++的面向对象
面向对象的编程注重谁(类)能解决某个问题,这个人具备什么样的特征(成员变量)和技能(成员函数)
类与结构体
1、类是C++面向对象编程思想的产物,是一种数据类型,C语言/C++中均有结构体,而类是C++所独有的
2、类的关键字为class
、结构体的关键字为struct
,二者的声明与定义都类似
3、C++中的类有访问控制权限public、private、protected
,而结构体中的成员函数与成员变量均默认为public
属性。C语言中的结构体没有访问控制权限
C++中的类与C++中的结构体目前在小编看来只有在访问控制权限上有明显的区别
4、编译器会为C++中的 类/结构体 自动生成四大成员函数:构造函数、析构函数、拷贝构造函数、赋值构造函数。而C语言中则没有这种机制
关键字
1)新的关键字
C++有C语言不具备的某些关键字,例如class、private、public、protected、throw、try、catch、inline、template、explicit、mutable
2)bool类型的区别
C++中bool、true、false
是关键字,C++具有真正的布尔类型,true、false
只占用一个字节
C语言中的bool
类型需要导入头文件#include <stdbool.h>
才能使用
3)static类型的区别
1、C语言与C++中static
的相同点:
① 修饰全局变量时,使得该全局变量只能在声明的.cpp/.c
文件中使用
② 修饰函数时,使得该函数只能在声明的.cpp/.c
文件中使用
③ 修饰局部变量时,生命周期延长,存储位置改变,作用域范围不变
C++中的
static
有特殊的用法:静态成员变量 + 静态成员函数
2、静态成员变量:
① static
修饰类中的成员变量,使得该变量被该类创建的所有对象共有(相当于这个类的全局变量),本质是因为静态成员变量只创建了一份,存储在bss段或data段