相同点:
- 都可以将多个属性封装为一个整体。
不同点
- 结构体只能封装数据,而类不仅可以封装数据还可以封装行为(封装方法)。
- 结构体变量分配在栈空间(如果是一个局部变量的情况下),而对象分配在堆空间。
- 栈的特点: 空间相对较小,但是存储在栈中的数据访问的效率更高一些。
- 堆的特点: 空间相对较大,但是存储在堆中的数据访问的效率相对要低。
- 赋值不同,结构体是值拷贝,类是对象地址。
应用场景
- 如果表示的这个实体不仅是由多个数据组成,这个实体还有行为,不解释只能使用类。
- 如果表示的实体没有行为,光有属性
- 如果属性较少,只有几个,那么这个时候定义为结构体,分配在 栈提高效率。
- 如果属性较多,不要定义结构体,因为这样结构体变量会在栈中占据很大一块空间反而影响效率。