私有繼承和保護繼承
私有繼承
繼承的訪問控制:
基類的public和prorected成員:都以private身份出現在派生類中;
基類的private成員:不可直接訪問
訪問許可權:
派生類中的成員函式:可以直接訪問基類中的public和protected成員,但不能訪問
基類的private成員;
通過派生類的物件:不能直接訪問從基類繼承的任何成員。
1point.h#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
1re#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
1 #include 2 #include 3 #include "main.crectangle.h"4
5int
main()
6
保護繼承(protected)
繼承的訪問控制:
基類的額public和protected成員:都以protected身份出現在派生類中;
基類的private成員:不可直接訪問。
訪問許可權:
派生中的成員函式:可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員;
通過派生類的物件:不能直接訪問從基類繼承的任何成員。
protected成員的特點與作用:
對建立其所在類物件的模組來說,它與private成員的性質相同。
對於其派生類來說,它與public成員的性質相同。
既實現了資料的隱藏,又方便繼承,實現**重用。
如果派生類有多個基類,也就是多繼承時,可以用不同的繼承方式繼承每個基類。
protected成員舉例:
1example1classa;5
6int
main()
1011
class
a ;16
17class b:public
a;21
22void
b::function()
1example2classa;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()
保護繼承和私有繼承
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...