C++访问修饰符:public vs private vs protected

       public、privateprotected是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》

你可能感兴趣的:(C++访问修饰符:public vs private vs protected)