这里有两种情况下的区别。
1、C的struct与C++的class的区别。
1、C的struct与C++的class的区别。
C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数。
2、C++中的struct和class的区别。
而在C++中,struct类似于class,在其中能包含成员函数、能继承、能实现多态。既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制:
A,默认的访问权限
struct是public权限,class是private权限。
B,默认的继承访问权限
struct是public的,class是private的。
这个时候B是public继承A的。struct A { char a; }; struct B : A { char b; };
如果都将上面的struct改成class,那么B是private继承A的。这就是默认的继承访问权限。 所以我们在平时写类继承的时候,通常会这样写:
class B : public A
就是为了指明是public继承,而不是用默认的private继承。
【struct与class混用】
struct可以继承class,同样class也可以继承struct,那么默认的继承访问权限是看子类到底是用的struct还是class。
struct A{};
class B : A{}; //private继承
struct C :B{}; //public继承
由此,可以得出:默认是public继承还是private继承,取决于子类。