您的位置 首页 > 清洁清洗

structs(struct和class的区别)

大家好,感谢邀请,今天来为大家分享一下structs的问题,以及和struct和class的区别的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

1、C中struct和class的区别

2、1)在C语言中,无class关键字,因此,如下的代码片段是无法通过编译的。

3、2)C语言中的struct不能定义函数,仅能定义数据成员。所以,我们通常使用struct来构建数据结构。

4、在如下的代码片段中,我们定义了两个数据成员,但是如果在这个结构体中尝试定义一个Play方法,则会编译失败。

5、C++中struct和class的区别

6、1)struct默认的数据访问控制是public的,class默认的访问控制是private的。

7、struct可以添加private/public修饰符,但是如果没有显式添加,则默认的访问权限为public,class默认为private。

8、2)在C++中,struct也可以继承。但是,struct默认的继承访问权限是public的,而class是private。

9、如下图所示,Student继承自Person,我们没有添加任何访问权限修饰符,所以默认情况下,Student公用继承自Person。

10、我们可以直接访问Student的数据成员。

11、我们将struct替换为class,因为class默认以private访问权限继承,所以,以下代码将不会通过编译。

12、另外,struct可以继承class,同样class也可以继承struct,默认的继承访问权限是看子类到底是用的struct还是class。如下:

13、//C定义为class,默认情况下,C私有继承自S1

14、//S2定义为struct,默认情况下,S2公用继承自C

15、3)使用大括号赋值。struct如果没有定义构造函数(是的,在C++中,struct也可以定义构造函数),可以使用大括号对struct的数据成员进行赋值。

16、但是如果struct中定义了一个构造函数,则不能使用大括号进行赋值了。以下代码将不会通过编译。

17、class只有在成员变量全部是public的情况下,才能使用大括号进行赋值。

18、4)在C++中,class这个关键字可以用于定义模板参数,struct则不能。

19、1)对类及对象进行建模时,使用class。

20、2)对数据结构进行建模时,使用struct。

关于structs,struct和class的区别的介绍到此结束,希望对大家有所帮助。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023