[問題] 呼叫 private 繼承來的 public function

看板C_and_CPP作者 (800IM)時間7年前 (2016/12/31 16:55), 7年前編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/1
問題(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://www.ptt.cc/bbs/C_and_CPP/M.1483174549.A.6F5.html

12/31 17:33, , 1F
你用private繼承 base class的成員在derived class內都會
12/31 17:33, 1F

12/31 17:33, , 2F
變成private
12/31 17:33, 2F
(大驚!!) 我以為 private 繼承是可以繼承最多成員,但不改變存取權限。 ※ 編輯: deo2000 (106.1.208.174), 12/31/2016 17:44:47

12/31 18:08, , 3F
你這個說法的話是public繼承 不會改變原本權限
12/31 18:08, 3F

12/31 18:08, , 4F
protect繼承是public改protect 其餘一樣
12/31 18:08, 4F

12/31 18:09, , 5F
private繼承如一樓所述 有誤請指正
12/31 18:09, 5F

01/01 06:38, , 6F
樓上, 我怎記得用public繼承也會降成protected?
01/01 06:38, 6F

01/01 06:42, , 7F
查了一下, 原來是我搞錯了~ 沒事~
01/01 06:42, 7F

01/01 13:33, , 8F
有一張九宮格圖把各種情況整理出來 股溝private public
01/01 13:33, 8F

01/01 13:33, , 9F
inheritance的圖片
01/01 13:33, 9F
文章代碼(AID): #1OPtALRr (C_and_CPP)