public、private和protected是C++的访问修饰符(Access Modifier),可以用于修饰类的成员,也可以用于修饰继承(Inheritance)。
1,当public、private和protected修饰类的成员时:
public:能被类的成员函数、子类的成员函数、类的友元函数,以及类的对象访问
private:只能被类本身的成员函数及友元函数访问
protected:只能被类本身的成员函数、子类的成员函数、类的友元函数访问,类的对象不能访问
如下代码所示:
在子类中,都看不到private的成员,如下所示:
类的对象中只能看到public的成员,如下所示:
运行结果如下,可以看到derive类从base类继承后,base的所有数据成员都“拷贝”到了derive,所以base的Size是12 bytes(因为三个int型数据),derive的Size也是12 bytes。
2,当public、private和protected修饰继承时,下图说明了一切:
C++访问修饰符 public / private / protected,不是为了告诉CPU如何行为,而是为了告诉其它程序员该如何行为。在团队开发的时候,告诉使用Class的人,该使用哪些Class的Members。当希望Class的成员可以被其它程序员访问的时候,会用public;用private,意思是不希望其它程序员在使用Class的时候,访问这些members,这些members由自己维护。
参考资料《Difference between private, public, and protected inheritance》