C (私有繼承和保護繼承)

2022-04-28 23:06:24 字數 2093 閱讀 2746

私有繼承和保護繼承

私有繼承

繼承的訪問控制:

基類的public和prorected成員:都以private身份出現在派生類中;

基類的private成員:不可直接訪問

訪問許可權:

派生類中的成員函式:可以直接訪問基類中的public和protected成員,但不能訪問

基類的private成員;

通過派生類的物件:不能直接訪問從基類繼承的任何成員。

1

#pragma once

2#ifndef _point_h

3#define _point_h

4class point

10void move(float offx,float

offy)

14float getx() const

15float gety() const

16private:17

float

x, y;

18};

19#endif

//!_point_h

point.h

1

#pragma once

2#ifndef _rectangle_h

3#define _rectangle_h

4 #include "

point.h"5

class rectangle :private point

12void move(float offx, float

offy)

15float getx() const

16float gety() const

17float geth() const

18float getw() const

19private:20

float

w, h;

21};

22#endif

//!_rectangle_h

re

1 #include 2 #include 3 #include "

rectangle.h"4

5int

main()

6

main.c

保護繼承(protected)

繼承的訪問控制:

基類的額public和protected成員:都以protected身份出現在派生類中;

基類的private成員:不可直接訪問。

訪問許可權:

派生中的成員函式:可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員;

通過派生類的物件:不能直接訪問從基類繼承的任何成員。

protected成員的特點與作用:

對建立其所在類物件的模組來說,它與private成員的性質相同。

對於其派生類來說,它與public成員的性質相同。

既實現了資料的隱藏,又方便繼承,實現**重用。

如果派生類有多個基類,也就是多繼承時,可以用不同的繼承方式繼承每個基類。

protected成員舉例:

1

classa;5

6int

main()

1011

class

a ;16

17class b:public

a;21

22void

b::function()

example1

1

classa;8

910class

b;17

18class c:public a,privateb25

26void a::seta(int

x)29

30void b::setb(int

x)33

34void c::setc(int x,int y,int

z)41

42//

其他函式實現略

43int

main()

example2

保護繼承和私有繼承

siwuxie095 在 c 中有三種繼承方式 關於公有繼承,詳見本人部落格的分類 c 遠征,裡面的公有繼承 公有繼承 1 基類中 public 下的成員將被繼承到派生類中 public 下 2 基類中 protected 下的成員將被繼承到派生類中 protected 下 3 基類中 privat...

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

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

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

三種訪問許可權 public 可以被任意實體訪問 protected 只允許子類及本類的成員函式訪問 private 只允許本類的成員函式訪問 友元函式可以訪問這三種訪問許可權的成員 三種繼承方式 public 繼承 protect 繼承 private 繼承 組合結果 基類中 繼承方式 子類中 p...