结构体(struct) | 类(class) | |
析构函数 | 不支持 | 支持 |
构造函数 | 支持,结构体中的构造函数的作用是:将其中的成员初始化置零 | 支持,类中的构造函数可以自定义函数内容 |
类型 | 结构体是值类型 | 类是引用类型 |
使用 | 值类型用于存储数据的值 结构体就是当成值来使用的 | 引用类型用于存储对实际数据的引用 类则通过引用来对实际数据操作 |
存储 | 栈存储 | 堆存储 |
访问/效率 | 栈的空间相对较小.但是存储在栈中的数据访问效率相对较高,栈由系统自动分配,速度较快。但程序员是无法控制的。 | 堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低,堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。 |
选择对象/效率 | 堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。 | |
用结构体处理作为基类型对待的小对象 | 用类处理某个较大较抽象的对象 | |
继承 | 不支持 | 支持,实现代码复用 |
变量初始化 | 不支持,声明时初始化就会报错 | 支持 |
成员的默认访问权限 | 默认public | 不做声明时,默认private(私有) |
包含属性 | 数据类型对象 | 过程,函数,数据类型对象 |
修改 | 结构体是值类型,所以对结构体变量所做的改变不会影响其的原值 | 类是引用类型,改变其变量的值会改变其原值。 |
结构体和类都是提供了数据的封装和构造 |