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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

