还在纠结这个问题。。。。
基类自己的private,public,protected ,在类中是无限制的,不管函数还是变量都随便调用,只不过这些调用仅限于类中定义的函数,但是在类外面,也就是类的使用者是无法调用protected ,private,但是能调用 public ,在类外面的意思就是其他使用者创建了一个该类的实例(不是类中成员函数里或者是友元函数里),它 . 的话是没办法调用protected 和private成员的。
但是基类由public继承派生出的子类是可以直接调用protected成员的,不管是函数还是变量。但是子类是无法调用private成员。
基类由private派生出的子类是无法调用父类任何东西的,因为父类所有成员对子类都是private的。
基类由protected派生出的子类和public一样,但是对于子类的使用者,所有由基类继承而来的东西都无法访问,因为基类所有东西都变成了protected。
总之你记住private是最封闭的,子类外界都无法访问,但是类本身可以访问。
protected是次封闭的,子类和本身可以访问,但是外界无法访问。
public是最开放的,子类外界本身都可以访问。
这些方面建议看看书,书上讲的详细多了,多揣摩自然就理解了。
- 声明 private protected public
继承
private x x x
protected x o o
public x o o
类外调用 x x o
由上图可见protected和public的区别:
在类外调用时,可以调用public成员,但是不能调用protected成员
基类自己当然可以调用自己的成员啦。
你确定基类是在类里面调用的吗?
在类外面,不管子类,父类都不能调用protected成员
PROTECTED是基类本身可以用, 子类也可以用,外面不能用
PRIVATE是基类自己用,子类都不可以用,外面不能用
PUBILC是基类能用,子类能用,外界也能用