C 公有繼承,保護繼承,私有繼承

2021-09-24 09:21:11 字數 1554 閱讀 5164

1.公有繼承–public

公有繼承時,對基類的公有成員和保護成員的訪問屬性不變,派生類的新增成員可以訪問基類的公有成員和保護成員,但是訪問不了基類的私有成員。派生類的物件只能訪問派生類的公有成員(包括繼承的公有成員),訪問不了保護成員和私有成員。

#include

using namespace std;

class base         

int getid()

int getcid()    //新增成員可以訪問公有成員

int getcnum()  //新增成員可以訪問保護成員

//無法訪問基類的私有成員

protected:

int y;

private:

int x;

};int main() 12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

3536

3738

2.保護繼承–protected

保護繼承中,基類的公有成員和保護成員被派生類繼承後變成保護成員,派生類的新增成員可以訪問基類的公有成員和保護成員,但是訪問不了基類的私有成員。派生類的物件不能訪問派生類繼承基類的公有成員,保護成員和私有成員。

class child : protected base

int getcid()   //可以訪問基類的公有成員和保護成員

int getcnum()

protected:

int y;

private:

int x;

};int main() 12

3456

78910

1112

1314

1516

1718

1920

213.私有繼承–private

私有繼承時,基類的公有成員和保護成員都被派生類繼承下來之後變成私有成員,派生類的新增成員可以訪問基類的公有成員和保護成員,但是訪問不了基類的私有成員。派生類的物件不能訪問派生類繼承基類的公有成員,保護成員和私有成員。

class child : private base

int getcid()   //可以訪問基類的公有成員和保護成員

int getcnum()

protected:

int y;

private:

int x;

};int main() 12

3456

78910

1112

1314

1516

1718

1920

214.總結

不管是哪種繼承方式,派生類中新增成員可以訪問基類的公有成員和保護成員,無法訪問私有成員。而繼承方式影響的是派生類繼承成員訪問屬性,而使用友元(friend)可以訪問保護成員和私有成員。 

派生類物件的訪問許可權 

C 公有繼承 私有繼承 保護繼承

公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private 基類的公有成員...

公有繼承 私有繼承 保護繼承

1.公有繼承 基類成員對派生類的可見性對派生類而言,基類的公有成員和保護成員可見,他們作為派生類的成員時,保持原有的狀態。基類的私有成員不可見,派生類不可訪問基類中的私有成員。基類成員對派生類物件的可見性對派生類物件而言,基類的公有成員是可見的,其他成員不可見。所以,在公有繼承時,派生類的物件可以訪...

C 中公有繼承 保護繼承 私有繼承

公有繼承時基類中各成員屬性保持不變,基類中private成員被隱藏。派生類的成員只能訪問基類中的public protected成員,而不能訪問private成員 派生類的物件只能訪問基類中的public成員。私有繼承時基類中各成員屬性均變為private,並且基類中private成員被隱藏。派生類...