请在这里概述您的问题C++中,基类protected能给子类直接调用??
公有继承。也就是说,基类自己都不能直接调用自己的protected成员,而子类却可以直接调用?...
公有继承。
也就是说,基类自己都不能直接调用自己的protected成员,而子类却可以直接调用? 展开
也就是说,基类自己都不能直接调用自己的protected成员,而子类却可以直接调用? 展开
3个回答
展开全部
还在纠结这个问题。。。。
基类自己的private,public,protected ,在类中是无限制的,不管函数还是变量都随便调用,只不过这些调用仅限于类中定义的函数,但是在类外面,也就是类的使用者是无法调用protected ,private,但是能调用 public ,在类外面的意思就是其他使用者创建了一个该类的实例(不是类中成员函数里或者是友元函数里),它 . 的话是没办法调用protected 和private成员的。
但是基类由public继承派生出的子类是可以直接调用protected成员的,不管是函数还是变量。但是子类是无法调用private成员。
基类由private派生出的子类是无法调用父类任何东西的,因为父类所有成员对子类都是private的。
基类由protected派生出的子类和public一样,但是对于子类的使用者,所有由基类继承而来的东西都无法访问,因为基类所有东西都变成了protected。
总之你记住private是最封闭的,子类外界都无法访问,但是类本身可以访问。
protected是次封闭的,子类和本身可以访问,但是外界无法访问。
public是最开放的,子类外界本身都可以访问。
这些方面建议看看书,书上讲的详细多了,多揣摩自然就理解了。
基类自己的private,public,protected ,在类中是无限制的,不管函数还是变量都随便调用,只不过这些调用仅限于类中定义的函数,但是在类外面,也就是类的使用者是无法调用protected ,private,但是能调用 public ,在类外面的意思就是其他使用者创建了一个该类的实例(不是类中成员函数里或者是友元函数里),它 . 的话是没办法调用protected 和private成员的。
但是基类由public继承派生出的子类是可以直接调用protected成员的,不管是函数还是变量。但是子类是无法调用private成员。
基类由private派生出的子类是无法调用父类任何东西的,因为父类所有成员对子类都是private的。
基类由protected派生出的子类和public一样,但是对于子类的使用者,所有由基类继承而来的东西都无法访问,因为基类所有东西都变成了protected。
总之你记住private是最封闭的,子类外界都无法访问,但是类本身可以访问。
protected是次封闭的,子类和本身可以访问,但是外界无法访问。
public是最开放的,子类外界本身都可以访问。
这些方面建议看看书,书上讲的详细多了,多揣摩自然就理解了。
追问
这就错啦。原理上子类可以间接访问基类的private,只是实际操作上程序员分工合作写代码,一般都是子类无法访问基类。
还有,真心不用说这么多,我的问题很简单,就是我写一段代码,里面有基类,子类。然后我想问基类protected如何能被调用?
基类是直接调用它还是间接调用它
子类是直接调用它还是间接调用它?
好了,问题就这么简单
追答
基类是可以直接调用也可以间接调用。
在public继承下子类可以直接调用也可以间接调用。
在protected继承下子类可以直接调用也可以间接调用。
在private继承下子类无法调用。
还有所谓的间接访问基类的private就是所谓的接口技术,当然多说无益,网上书上都有。
展开全部
- 声明 private protected public
继承
private x x x
protected x o o
public x o o
类外调用 x x o
由上图可见protected和public的区别:
在类外调用时,可以调用public成员,但是不能调用protected成员
基类自己当然可以调用自己的成员啦。
你确定基类是在类里面调用的吗?
在类外面,不管子类,父类都不能调用protected成员
继承
private x x x
protected x o o
public x o o
类外调用 x x o
由上图可见protected和public的区别:
在类外调用时,可以调用public成员,但是不能调用protected成员
基类自己当然可以调用自己的成员啦。
你确定基类是在类里面调用的吗?
在类外面,不管子类,父类都不能调用protected成员
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PROTECTED是基类本身可以用, 子类也可以用,外面不能用
PRIVATE是基类自己用,子类都不可以用,外面不能用
PUBILC是基类能用,子类能用,外界也能用
PRIVATE是基类自己用,子类都不可以用,外面不能用
PUBILC是基类能用,子类能用,外界也能用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询