例7-2私有继永举例 类 class Rectangle: private Point派生类声明 成{ public:∥新增外部接口 void InitR(float X, float y, float w, float h) nitP(xy)W=w;H=h}∥访问基类公有成员 的访问 void Move(float xOff, float yoff) [Point: Move(XOff,yOf; float GetXo freturn Point:: GetX0:] float GetYo [return Point: GetY0:] 控空 float GetHo return H,] 制 float Getwo ireturn W:] private:新增私有数据 float W.H: 订一页休息
前一页 休息 16 例7-2 私有继承举例 class Rectangle: private Point //派生类声明 {public: //新增外部接口 void InitR(float x, float y, float w, float h) {InitP(x,y);W=w;H=h;} //访问基类公有成员 void Move(float xOff, float yOff) {Point::Move(xOff,yOff);} float GetX() {return Point::GetX();} float GetY() {return Point::GetY();} float GetH() {return H;} float GetW() {return W;} private: //新增私有数据 float W,H; }; 类 成 员 的 访 问 控 制
Include<iostream h> include<math. h>int maino int main( 【/通过派生类对象只能访间本类成员 Rectangle rect: rect InitR (2, 3, 20, 10); rect Move(3, 2); cout<<rect. get0<≤, <<rect GetY(<< <<rect. GetHO<< < rect etw0<≤endl; return 0
#include<iostream.h> #include<math.h>int main() int main() { //通过派生类对象只能访问本类成员 Rectangle rect; rect.InitR(2,3,20,10); rect.Move(3,2); cout<<rect.GetX()<<',' <<rect.GetY()<<',' <<rect.GetH()<<',' <<rect.GetW()<<endl; return 0; }
保护继承( protected) 类 成·基类的 public和 protected成员都以 员 protected身份出现在派生类中,但 的基类的 private成员不可访问 访。派生类中的成员函数可以直接访问基 同类中的 public和 protected成员,但 控不能访问基类的 private成员 制通过派生类的对象不能访间基类中的 任何成员 休息
前一页 休息 18 保护继承(protected) ⚫ 基类的public和protected成员都以 protected身份出现在派生类中,但 基类的private成员不可访问。 ⚫ 派生类中的成员函数可以直接访问基 类中的public和protected成员,但 不能访问基类的private成员。 ⚫ 通过派生类的对象不能访问基类中的 任何成员 类 成 员 的 访 问 控 制
protected成员的特点与作用 类 成·对建立其所在类对象的模块来说,它 员与 private成员的性质相同 的。对于其派生类来说,它与pubc成 访员的性质相同。 同。既实现了数据隐藏,又方便继承,实 控现代码重用。 制 休息
前一页 休息 19 protected 成员的特点与作用 ⚫ 对建立其所在类对象的模块来说,它 与 private 成员的性质相同。 ⚫ 对于其派生类来说,它与 public 成 员的性质相同。 ⚫ 既实现了数据隐藏,又方便继承,实 现代码重用。 类 成 员 的 访 问 控 制
例73 protected成员举例 类成员的访 class a t protected: int x: 局 Int main0 控 制 Aa a.x(=5;川错误 了页体息
前一页 休息 20 例7-3 protected 成员举例 class A { protected: int x; } int main() { A a; a.X=5; //错误 } 类 成 员 的 访 问 控 制