C++语言程序设计 清华大学郑莉 例7-2私有继永举例 类 class Rectangle:private Point/派生类声明 成 {public: 川新增外部接口 void InitR(float x,float y,float w,float h) [InitP(x,y):W=w;H=h;}I∥访问基类公有成员 的 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()freturn W;} private: 新增私有数据 float W,H; 16
C++语言程序设计 清华大学 郑莉 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> #include<cmath> using namecpace std; 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; 17
#include<iostream> #include<cmath> using namecpace std; 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; } 17
C++语言程序设计 清华大学郑莉 保护继永(protected) 基类的oublic和protected成员都以 成员的访问控制 protected.身份出现在派生类中,但 基类的private成员不可直接访问。 派生类中的成员函数可以直接访问基 类中的oublic和protected成员,但 不能直接访问基类的orivate,成员。 ● 通过派生类的对象不能直接访问基类 中的任何成员 18
C++语言程序设计 清华大学 郑莉 18 保护继承(protected) ⚫ 基类的public和protected成员都以 protected身份出现在派生类中,但 基类的private成员不可直接访问。 ⚫ 派生类中的成员函数可以直接访问基 类中的public和protected成员,但 不能直接访问基类的private成员。 ⚫ 通过派生类的对象不能直接访问基类 中的任何成员 类 成 员 的 访 问 控 制
C++语言程序设计 清华大学郑莉 protected成员的特点与作用 对建立其所在类对象的模块来说,它 成员的访问控制 与private成员的性质相同。 对于其派生类来说,它与public成 员的性质相同。 既实现了数据隐藏,又方便继承,实 现代码重用
C++语言程序设计 清华大学 郑莉 19 protected 成员的特点与作用 ⚫ 对建立其所在类对象的模块来说,它 与 private 成员的性质相同。 ⚫ 对于其派生类来说,它与 public 成 员的性质相同。 ⚫ 既实现了数据隐藏,又方便继承,实 现代码重用。 类 成 员 的 访 问 控 制
C++语言程序设计 清华大学郑莉 例7-3 protected成员举例 class A protected: 成员的访问控制 int x; int main() Aa; a.x=5; 错误 ★并 天 20
C++语言程序设计 清华大学 郑莉 20 例7-3 protected 成员举例 class A { protected: int x; } int main() { A a; a.x=5; //错误 } 类 成 员 的 访 问 控 制