大家好,感谢邀请,今天来为大家分享一下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的区别的介绍到此结束,希望对大家有所帮助。