C++语言程序设计 清华大学郑莉 有继承( public 类 成。基类的pubc和 protected成员的访间 员属性在派生类中保持不变,但基类的 的 private成员不可直接访问 访·派生类中的成员函数可以直接访问基类 向中的 public和 protected成员,但不能 控直接访问基类的 private成员。 制●通过派生类的对象只能访问基类的 public成员
C++语言程序设计 清华大学 郑莉 11 公有继承(public) ⚫ 基类的public和protected成员的访问 属性在派生类中保持不变,但基类的 private成员不可直接访问。 ⚫ 派生类中的成员函数可以直接访问基类 中的public和protected成员,但不能 直接访问基类的private成员。 ⚫ 通过派生类的对象只能访问基类的 public成员。 类 成 员 的 访 问 控 制
C++语言程序设计 清华大学郑莉 例71公有继承举例 类 成 class Point∥基类 Point类的声明 s (public:公有函数成员 void InitP(float XX=0, float yy=0) rb X=XX; Y=yy in void Move(float XOff, float yoff) tX+=xOff;Y+=yoff; 1 控空 float Getxo [return X,] float GetYo [return Y;] 制 private:私有数据成员 float XY;
C++语言程序设计 清华大学 郑莉 12 例7-1 公有继承举例 class Point //基类Point类的声明 {public: //公有函数成员 void InitP(float xx=0, float yy=0) {X=xx;Y=yy;} void Move(float xOff, float yOff) {X+=xOff;Y+=yOff;} float GetX() {return X;} float GetY() {return Y;} private: //私有数据成员 float X,Y; }; 类 成 员 的 访 问 控 制
class Rectangle: public Point∥派生类声明 public:新增公有函数成员 void Initr(float x, float y, float w, float h) {nitP(x,y);W=w;H=h:y调用基类公有成员函数 float GetHO return H; 1 float Getwo ireturn W:] private:新增私有数据成员 float wh
class Rectangle: public Point //派生类声明 { public: //新增公有函数成员 void InitR(float x, float y, float w, float h) {InitP(x,y);W=w;H=h;}//调用基类公有成员函数 float GetH() {return H;} float GetW() {return W;} private: //新增私有数据成员 float W,H; }; 13
Include<iostream> include<cmath> using namespace std; int maino i Rectangle rect; rect InitR (2, 3, 20, 10); 历通过派生类对象访问基类公有成员 rect Move(3, 2) cout<<rect, Get0≤, <<rect. GetYO<< <<rect. GetHO<<, < rect, Get0≤ <endl; return 0
#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; } 14
C++语言程序设计 清华大学郑莉 私有继承( private) 类 成·基类的 public和 protected成员都以 员 private身份出现在派生类中,但基类 的的 private成员不可直接访问。 访。派生类中的成员函数可以直接访问基 类中的 public和 protected 成员,但 不能直接访问基类的 private成员。 控通过派生类的对象不能直接访问基类 制 中的任何成员
C++语言程序设计 清华大学 郑莉 15 私有继承(private) ⚫ 基类的public和protected成员都以 private身份出现在派生类中,但基类 的private成员不可直接访问。 ⚫ 派生类中的成员函数可以直接访问基 类中的public和protected成员,但 不能直接访问基类的private成员。 ⚫ 通过派生类的对象不能直接访问基类 中的任何成员。 类 成 员 的 访 问 控 制