1、對于虛擬函數,子類里的成員訪問權限符可以和父類不同。即對于基類的函數func如果是public的,子類中它可以是private的。
?
class Base { public: Base(); virtual ~Base(); public: virtual void func(void); // 公有 }; class Derived : public Base { public: Derived(); virtual ~Derived(); private: void func(void); // 私有,和父類不同 }; Base * pB = new Base(); pB->func(); pB = new Derived(); pB->func(); // 正常訪問 Derived * pD = new Derived(); // pD->func(); 不能訪問
2、“存取限制”不能解除“因多繼承而得的members”的模棱兩可的狀態。原因:改變某個class member的可存取性,絕不應該連帶改變程序的意義。
?
?
class Base1 { public: int doIt(); }; class Base2 { private: int doIt(); // 不管這里是public,protected還是private,都會產生模棱兩可 } class Derived: public Base1, public Base2 { } Derived d; int i = d.doIt(); // 錯誤,模棱兩可
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
