該規則規定,在派生類的公共說明符(派生類對象)的情況下,可以將其視爲基類的對象(反之亦然)。那是什麼意思?C++中派生類的對象可以被父類訪問嗎?
任何/任何地方的所有公共元素都可以訪問嗎?
這是否指的是這樣一個事實,即父類的屬性和方法定義爲public可由派生類訪問。但是如果派生類中的屬性和方法是公共的,那麼它們不能被父類/基類訪問?
In a public base class
Base class members How inherited base class members appear in derived class
private: x ------------------------> x is inaccessible
protected: y ------------------------> protected: y
public: z ------------------------> public: z
但是反過來呢?
如何從父類方法的代碼中訪問子類(非繼承,非虛擬)成員? – hyde 2014-10-10 15:46:21
如果我有'班級圈子'。例如,我創建了一個「circle r」的實例,訪問公共屬性radius爲'r.radius'。如果我在主要部分中寫入該屬性,則屬性必須公開。如果我想在派生類中訪問相同的'radius',爲什麼我不能這樣做。既然該方法/成員是公開的? – YelizavetaYR 2014-10-10 15:58:20
簡單的答案,是他們*可以*。更好的問題是「他們應該是?」。事實上,正在考慮這種氣味很像一個需要重新思考的設計,除非在一些非常罕見和特殊的情況下,甚至可能不是那樣...... – twalberg 2014-10-10 16:04:15