C 派生類的成員或友員只能通過派生類物件來訪問基類的受保護成員

時間 2021-05-08 21:36:06

1樓:tonyDpz

我的理解是:派生類繼承了基類protected成員,那麼this指向的當前的派生類物件a是可以用a的成員函式來訪問繼承來的基類protected成員。

but!!!

如果派生類的物件不是this指向的當前派生類物件,比如在派生類中又生成了乙個新的基類物件b,那麼在派生類中就不能訪問b的protected成員了。

其實意思就是,所有派生類的成員函式能訪問的基類的protected成員必須都是自己繼承來的。

2樓:

意思是:只有在派生類中才可以通過派生類物件訪問基類的protected成員。

class Base

;class Derive : public Base;Derive::Derive()

到使用類的地方:

Derive *d = new Derive();

std::cout<< d->m <

不知道是沒翻譯好還是作者就沒表達好

3樓:邱昊宇

並不矛盾,第一條是:

老爸拿出他的卡,對兒子說:「我的卡就是你的卡,隨便拿去刷。」第二條是:

兒子有個朋友,最近手頭緊。雖然是借同一張卡,但是問誰要是個技術活。

---朋友:大哥,借我點錢花花?

兒子:拿去,這是我爹的卡,他的就是我的,你放心隨便刷。

---朋友:叔叔,借我點錢花花?

老爸:你誰啊?誒誒!你 TM 伸手拿我的卡是幾個意思?雖然作者事情說得沒錯,但我更傾向於認為這是 friend 的重要性質,而不是 protected 的。

為什麼 C 中,基類指標可以指向派生類物件?

WangKX 語法就這麼規定這叫多型性,如果往深點說,因為子類物件一般比父類物件大,因此這麼指並沒問題,但反過來不行比如子類指標指向父類物件 馬東啥梅來著 不同型別的指標在記憶體中所佔大小是相同的,區別在於編譯器對於指標的解釋是不同的。乙個指標指向某個類的物件,實際上是指向該物件所佔記憶體的首位址位...

關於多繼承的派生類中資料成員的偏移量?

pezy 邱昊宇 說的很對。引用的話好讚。看來要多讀讀The StandardStandard C 才是硬道理啊。簡單補充一下 剛才親自試了一下,如果是VC VS2013 將警告調到最高,竟然也沒有真相!好吧,還是用g 吧。你這樣寫就可以獲取偏移量了 int Base1 p1 Base1 val1 ...

C 中為什麼派生類中只有基本型別時,delete乙個指向派生類的基類指標時卻沒有記憶體洩漏?

你試試這樣 class widget public QWidget MSVC的string實現方式是SSO,大致的原理是內建乙個char棧陣列,如果字串很短的話就不使用堆記憶體,你那個寫法string還是空的,沒有分配堆記憶體,從頭到尾都只在棧上有資料當然不存在記憶體洩漏問題,所以你還需要強制地給s...