例1 void main() class A{ { A a; protected: B b; int X; b.Function(); }; a.X=5; class B:public A b.X=7; { } public: 错误,水平访问时 void Function(); 保护成员相当于 }; 私有成员 void B::Function() { 正确,垂直访问时 X=5; 保护成员相当于 }
例(续2)
#include <iostream> using namespace std; void main( ) { Rectangle rect; rect.InitR(2,3,20,10); //水平访问 rect.Move(3,2); // 直接调用基类公有成员函数 cout<<rect.GetX()<<","<<rect.GetY()<<"," <<rect.GetH()<<", "<<rect.GetW()<<endl; } 输出: 5,5,10,20
公有成员
例7_1:分析下列程序中的访问权限
class Point { public: void InitP(int xx,int yy); void Move(int xOff,int yOff); int GetX() {return X;} int GetY() {return Y;} private: int X,Y; }; //基类声明结束 void Point::InitP(int xx,int yy) //函数成员实现 { X=xx; Y=yy; } void Point::Move(int xOff,int yOff) { X+=xOff; Y+=yOff; }