C++ 中的 struct 对 C 中的 struct 进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。
struct 能包含成员函数吗? 能!
struct 能继承吗? 能!!
struct 能实现多态吗? 能!!!
既然这些它都能实现,那它和 class 还能有什么区别?
最本质的一个区别就是默认的访问控制,体现在两个方面:
1)默认的继承访问权限。struct是public的,class是private的。
你可以写如下的代码:
struct A
{
char a;
};
struct B : A
{
char b;
};
这个时候 B 是 public 继承 A 的。
如果都将上面的 struct 改成 class,那么 B 是 private 继承 A 的。这就是默认的继承访问权限。
所以我们在平时写类继承的时候,通常会这样写:
struct B :public A
就是为了指明是 public 继承,而不是用默认的 private 继承。
当然,到底默认是 public 继承还是 private 继承,取决于子类而不是基类。
我的意思是,struct 可以继承 class,同样 class 也可以继承 struct,那么默认的继承访问权限是看子类到底是用的 struct 还是 class。如下:
struct A{};
class B : A{};//private继承
struct C : B{};//public继承