在 private域和 protected中声明的数据成员和成 员函数构成类的私有部分,只能由该类的对象和成 员函数,以及声明为友元rend)的函数或类的对 象才能访问它们。 在 protected城中声明的数据成员和成员函数,还允 许该类的派生类访问它们; 在 private域中声明的数据成员和成员函数,则不允 许该类的派生类访问它们。 下面给出一个 point类的声明。 Point类中点的表 示由两个整数变量x,y组成。类的用户不能直接 访问它们
•在private域和protected域中声明的数据成员和成 员函数构成类的私有部分,只能由该类的对象和成 员函数,以及声明为友元(friend)的函数或类的对 象才能访问它们。 •在protected域中声明的数据成员和成员函数,还允 许该类的派生类访问它们; •在private域中声明的数据成员和成员函数,则不允 许该类的派生类访问它们。 •下面给出一个 point 类的声明。Point 类中 点的表 示由两个整数变量 x, y 组成。类的用户不能直接 访问它们
class point i private ∥有域 int X, ∥数据成员:点坐标 int y, public ∥有域 Point(int,int);构造函数 Point( Point&);∥复制构造函数 aPoint (; ∥析构函数 int get X();m取x坐标 int get y ( 取y坐标 Point operator+( point);∥点加点 Point operator / int ) ∥点除整数 Point operator*( int ) ∥点乘整数
class Point { private: //私有域 int x; //数据成员:点坐标 int y; public: //共有域 Point ( int, int ); //构造函数 Point ( Point & ); //复制构造函数 ~Point ( ); //析构函数 int get_x ( ); //取x坐标 int get_y ( ); //取y坐标 Point operator + ( point ); //点加点 Point operator / ( int ); //点除整数 Point operator * ( int ); //点乘整数
int operator >( Point ∥点比较 int operator < Point ) ∥)比较 int operator==( Point&);∥点比较 friend istream& operator > ( istream&, Point&);输入友元函数 friend ostream& operator ( ostream&, Point&);输出友元函数 为了存取一个点的x,y分量,类提供了两个函数 getx,gety。这样可用 private域来保护数据 的表示,防止类的用户直接使用数据的内部表示 来编写代码,通过使用存取函数来操作数据来 维持类的抽象性
int operator > ( Point ); //点比较 int operator < ( Point ); //点比较 int operator == ( Point& ); //点比较 friend istream& operator >> ( istream&, Point& ); //输入友元函数 friend ostream& operator << ( ostream&, Point& ); //输出友元函数 }; •为了存取一个点的x, y分量, 类提供了两个函数 get_x, get_y。这样可用private域来保护数据 的表示, 防止类的用户直接使用数据的内部表示 来编写代码,通过使用存取函数来操作数据来 维持类的抽象性
private是声明默认的存取级别。 系统开发时,把类的声明放在头文件中,成员函数 的实现放在源程序文件中。在源程序文件中函 数的实现通过作用城设定命令“∷而被归属到 某一个类。 例,对于Poin类的输出友元函数的实现可以在源程 序文件中给出,形为 ostream operator <<(ostream& strm, Point p I return strm <<"(<< pget X( 把点p的值以“(x,y)” 的格式送到strm指明 的输出流中去
• private是声明默认的存取级别。 •系统开发时, 把类的声明放在头文件中, 成员函数 的实现放在源程序文件中。在源程序文件中函 数的实现通过作用域设定命令“::”而被归属到 某一个类。 例,对于Point类的输出友元函数的实现可以在源程 序文件中给出,形为: ostream & operator << (ostream& strm, Point p) { return strm << "(" << p.get_x ( ) << "," << p.get_y () << ")"; } 把点p的值以“(x, y)” 的格式送到strm指明 的输出流中去
建立类的对象(亦称为实例化)时采用的方式类 似于定义C变量的方式,可以自动地,或静态 地,或通过动态分配来建立。建立一个 Point 类实例的语句是 Point p(6,3);自动地 ● Point q; 自动地 static Point s(3,4);静态地 Pont*t= new Point(1,1);通过动态分配 对象p、q和s都是 Point类的对象
◼ 建立类的对象(亦称为实例化)时采用的方式类 似于定义C变量的方式,可以自动地,或静态 地, 或通过动态分配来建立。建立一个 Point 类实例的语句是: ◆ Point p (6, 3); 自动地 ◆ Point q; 自动地 ◆ static Point s (3, 4); 静态地 ◆ Point *t = new Point(1, 1); 通过动态分配 ◼ 对象p、q和s都是Point类的对象