结构体和类的区别

结构体和类的区别

结构体和类的区别


1、类型不同:结构是一种值类型,而类是引用类型 。值类型用于存储数据的值,引用类型用于存储对实际数据的引用 。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作 。
2、存储不同:结构使用栈存储,而类使用堆存储 。栈的空间相对较小 。但是存储在栈中的数据访问效率相对较高 。堆的空间相对较大 。但是存储在堆中的数据的访问效率相对较低 。
3、作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性 。
4、关键字不同:在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构 。
5、初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段) , 否则报错 。
结构体和类的区别及面向对象的认识区别
结构体是单独于某个具体对象的存在 。是数据结构在代码中的实现 。
结构体是为了某些算法或者实现特定功能而存在的类似接口的这种抽象存在 。
类则是现实世界的实体在代码中的实现 。
类是有自己的属性自己的方法 。
共性
两者的作用都是封装 。结构体也支持面向过程语言比如C 。类却都是面向对象的封装 。
类和结构体的主要区别C/C++结构体的区别
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数 。
C++中的结构体和类的异同:
一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象 。但C中的结构体不允许有函数;
也就是说在C++当中,结构体中可以有成员变量,可以有成员函数 , 可以从别的类继承,也可以被别的类继承,可以有虚函数 。
二、不同之处:结构体定义中默认情况下的成员是public , 而类定义中的默认情况下的成员是private的 。类中的非static成员函数有this指针,(而struct中没有是错误的 , 一直被误导啊,经过测试struct的成员函数一样具有this指针) , 类的关键字class能作为template模板的关键字 即template class A{}; 而struct不可以 。
实际上,C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合 。
结构体和类的区别数据结构体和类都是面向对象编程中常见的数据类型,它们的主要区别在于以下几个方面:
1. 成员访问权限:在C++中,结构体的默认访问权限是 public,而类的默认访问权限是 private 。这意味着,当定义一个类时 , 它的成员是不能被外界直接访问的,需要通过方法(成员函数)来访问;而定义一个结构体时 , 它的成员可以被外界直接访问 。
2. 默认继承关系:在C++中,由于类的访问权限默认是 private,因此类对外界的接口由其公有的成员函数来提供,这使得类更适合作为可继承的接口 。而结构体默认访问权限是 public,所以结构体更适合用于定义轻量级的数据类型 。
3. 内存布局:在C++中 , 类的对象通常包含成员函数指针,因此类对象的大小可能不同于其成员变量的大小 。而结构体对象只包含其成员变量,因此其大小就等于成员变量的大小 。
总的来说,类通常用于定义对象,提供方法、行为等,适合封装复杂逻辑和数据结构;而结构体通常用于封装简单数据类型,方便在不同函数间传递 。当然,也需要根据实际需求来选择使用哪种数据类型 。
结构体和类的区别及面向对象的认识区别
结构体是单独于某个具体对象的存在 。是数据结构在代码中的实现 。
结构体是为了某些算法或者实现特定功能而存在的类似接口的这种抽象存在 。
类则是现实世界的实体在代码中的实现 。
类是有自己的属性自己的方法 。
共性
两者的作用都是封装 。结构体也支持面向过程语言比如C 。类却都是面向对象的封装 。
【结构体和类的区别】

    推荐阅读