C++语言程序设计 清华大学郑莉 例7-2私有继永举例 类 class Rectangle:private Point/派生类定义部分 成 public:/新增公有函数成员 ectangle (float x floay,float 员 initPoint(x,y);//调用基类公有成员函数 this->ww; 的 this->hh; 访 void move(float offX,float offy){ Point:move(offX,offy); 问 float getx(const 控 return Point:getX(); float getY(const return Point:getY(); float getHO const return h; 制 float getW() const return w; private: //新增私有数据成员 float w,h; };
C++语言程序设计 清华大学 郑莉 16 例7-2 私有继承举例 class Rectangle: private Point { //派生类定义部分 public://新增公有函数成员 void initRectangle(float x, float y, float w, float h) { initPoint(x, y); //调用基类公有成员函数 this->w = w; this->h = h; } void move(float offX, float offY) { Point::move(offX, offY); } float getX() const { return Point::getX(); } float getY() const { return Point::getY(); } float getH() const { return h; } float getW() const { return w; } private: //新增私有数据成员 float w, h; }; 类 成 员 的 访 问 控 制
#include <iostream> #include <cmath> using namespace std; int main() Rectangle rect;/定义Rectangle类的对象 rect.initRectangle(2,3,20,10);//设置矩形的数据 rect.move(3,2);/移动矩形位置 cout <"The data of rect(x,y,w,h):"<endl; cout<rect.getX0<”,”/输出矩形的特征参数 〈<rect.getY0(<", <rect.getW0<K”," <rect.getH()<<endl; return 0; 6
#include <iostream> #include <cmath> using namespace std; int main() { Rectangle rect; //定义Rectangle类的对象 rect.initRectangle(2, 3, 20, 10);//设置矩形的数据 rect.move(3,2); //移动矩形位置 cout << "The data of rect(x,y,w,h): " << endl; cout << rect.getX() <<", " //输出矩形的特征参数 << rect.getY() << ", " << rect.getW() << ", " << rect.getH() << endl; return 0; } 17
C++语言程序设计 清华大学郑莉 保护继永(protected) 类 成 ● 基类的public和orotected成员都以 员 protected.身份出现在派生类中,但 的 基类的orivate成员不可直接访问。 访 ●派生类中的成员函数可以直接访问基 问 类中的oublic和protected成员,但 不能直接访问基类的private成员。 控 制 ·通过派生类的对象不能直接访问基类 中的任何成员
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; //错误
C++语言程序设计 清华大学 郑莉 20 例7-3 protected 成员举例 class A { protected: int x; }; int main() { A a; a.x = 5; //错误 } 类 成 员 的 访 问 控 制