结构体 struct 和类 class 的比较

C的结构体和C++结构体的区别

1、组成不同

C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。

2、权限不同

C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。

3、特性(继承)不同

C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。

以上都是表面的区别,实际区别就是面向过程和面向对象编程思路的区别

1、C的结构体只是把数据变量给包裹起来了,并不涉及算法。

2、C++是把数据变量及对这些数据变量的相关算法给封装起来,并且给对这些数据和类不同的访问权限。

3、 C语言中是没有类的概念的,但是C语言可以通过结构体内创建函数指针实现面向对象思想。


结构体和类之间的区别

1、结构体是很多数据的结构,里面不能有对这些数据的操作,而类class是数据以及对这些数据的操作的封装,是面向对象的基础;

2、而且class对成员变量有访问权限的控制,而struct则没有,在结构体外可以访问结构体内任何一个变量,而在类外,则不能访问类中私有的成员变量。

3、这只是最主要的几点区别,还有其他的区别,总之,类是比结构体更高级的对数据的封装,结构体能做的,类都能做,反之则不然。

  • 结构在堆栈中创建,是值类型,而类是引用类型。每当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。

  • 结构是值类型,所以会影响性能,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。正面的影响是为结构分配内存时,速度非常快,因为它们将内 联或者保存在堆栈中。在结构超出了作用域被删除时,速度也很快。另一方面,只要把结构作为参数来传递或者把一个结构赋给另一个结构(例如A=B,其中A和B是结构),结构的所有内容就被复制,而对于类,则只复制引用。这样,就会有性能损失,根据结构的大小,性能损失也不同。注意,结构主要用于小的数据结构。但当把结构作为参数传递给方法时,就应把它作为ref参数传递,以避免性能损失——此时只传递了结构在内存中的地址,这样传递速度就与在类中的传递速度一样快了。另一方面,如果这样做,就必须注意被调用的方法可以改变结构的值。

class和struct有且仅有一个区别,那就是对于class说明的类成员,函数也好,变量也好,如果没有指定类型,缺省是private限定的。而对于struct,则是public的。

结构体数组效率比类数组效率高(不需要装箱合拆箱)。结构体集合(如Hashtable)效率比类集合效率低。集合的元素是引用类型,所以结构体必须进行装箱和拆箱处理。所以类在大的集合中更有效率。

猜你喜欢

转载自blog.csdn.net/m0_37925202/article/details/81285073
今日推荐