作者deo2000 (800IM)
看板C_and_CPP
标题[问题] 呼叫 private 继承来的 public function
时间Sat Dec 31 16:55:47 2016
问题(Question):
private 继承来的 public function 是否不能在类别外被呼叫 ?
预期的正确结果(Expected Output):
可以编译过
错误结果(Wrong Output):
error: ‘void Layer::SetNode(int)’ is inaccessible
补充说明(Supplement):
void Layer::SetNode(int) 以 public 宣告在 Base Class
Derived class 为 private 继承
想在物件之外从 Derived class 呼叫
例如: ptrDerived->SetNode(5) //is inaccessible
这样是不合法的吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.208.174
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1483174549.A.6F5.html
1F:推 ko27tye: 你用private继承 base class的成员在derived class内都会 12/31 17:33
2F:→ ko27tye: 变成private 12/31 17:33
(大惊!!) 我以为 private 继承是可以继承最多成员,但不改变存取权限。
※ 编辑: deo2000 (106.1.208.174), 12/31/2016 17:44:47
3F:→ nick5130: 你这个说法的话是public继承 不会改变原本权限 12/31 18:08
4F:→ nick5130: protect继承是public改protect 其余一样 12/31 18:08
5F:→ nick5130: private继承如一楼所述 有误请指正 12/31 18:09
6F:推 pornstar: 楼上, 我怎记得用public继承也会降成protected? 01/01 06:38
7F:→ pornstar: 查了一下, 原来是我搞错了~ 没事~ 01/01 06:42
8F:推 friends29: 有一张九宫格图把各种情况整理出来 股沟private public 01/01 13:33
9F:→ friends29: inheritance的图片 01/01 13:33