类与对象的概念 对象(object):是现实世界中的客观事物。 类(class):是把具有相同属性的事物划分为一类,从而得出的抽象概念。 面向对象程序设计中的类,是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了抽象的描述。 对象是类的实例,类是同种对象的抽象。 如:确定大小和颜色的矩形都是一个个具体的对象,而将所有矩形的共同特点抽象出来,就是一个矩形类。 这些共有的属性包括颜色 ( color ),左上角坐标 ( left, top ),长 ( length )和宽 ( width ) 等; 对这些属性的处理包括改变矩形的颜色 ( SetColor ) 和大小 ( SetSize ) ,移动矩形到新的位置 ( Move ),绘出矩形 ( Draw ) 等。将矩形的这些属性和方法作为一个整体,封装在一起形成一个矩形类。 类的声明 class 类名 { private: 私有数据成员和成员函数; protected: 保护数据成员和成员函数; public: 公有数据成员和成员函数; }; 例1 定义一个长方形类CRect,其数据成员包括颜色,左上角坐标,长和宽,其函数成员包括改变矩形的颜色(SetColor)和大小(SetSize),移动矩形到新的位置(Move),绘出矩形(Draw)。 class CRect { private: char color[10]; int left; int top; int length; int width; public: void SetColor(char *c); void SetSize(int l, int w); void Move(int t,int l); void Draw(); }; void CRect::SetColor(char *c) { strcpy(color, c); } void CRect::SetSize(int l, int w) { length=l; width = w; } void CRect::Move(int t,int l) { top = t; left = l; } void CRect:raw() { cout << "矩形左上角坐标为(" << left << "," << top << ")" << endl; cout << "矩形长和宽分别为" << length << "," << width << endl; cout << "矩形的颜色是" << color << endl; }
void main() { CRect r; r.SetColor("Red"); r.Move(10,20); r.SetSize(100,200); r.Draw(); r.Move(50,50); r.SetColor("Blue"); r.Draw(); } 程序运行结果为: 矩形左上角坐标为(20,10) 矩形长和宽分别为100,200 矩形的颜色是Red 矩形左上角坐标为(50,50) 矩形长和宽分别为100,200 矩形的颜色是Blue 成员的访问控制 private: 私有访问权限,只允许类中的成员函数访问,其他函数不能访问。 protected: 保护访问权限,在第7章中介绍。 public: 公有访问权限,在任何函数中都可以访问。
例:若主函数中有以下语句,是否正确? CRect r; strcpy( r.color , “red”); r.top = 10; r.left = 20; 若不指定类中的成员的访问权限,则默认为私有成员。 类也可以由struct关键字声明,strust与class的区别是:如果不指定访问权限,前者缺省的访问权限是公有的,而后者是私有的。用struct声明前面的矩形类: struct CRect { void SetColor(char *c); void SetSize(int l, int w); void Move(int t,int l); void Draw(); private: char color[10]; int left; int top; int length; int width; }; 类的成员函数 1. 类成员函数的定义方式 在类外部定义:如前面定义的长方形类的成员函数 一般格式为: 函数类型 类名::成员函数名(参数说明) { 函数体 } 在类中定义:如 class CRect { …… public: void setcolor( char *c ){ strcpy( color , c ); } …… }; 2. 内联成员函数 将成员函数的定义直接写在类中即成为内联成员函数 在类外定义时用inline指出: 如: inline void CRect::SetColor(char *c) { strcpy(color, c); } 3. 带默认参数值的成员函数 注意:默认参数只能在声明或定义中的一处给出,即 如在类中的函数声明已经给出默认参数值: void SetSize(int l=100, int w=100); 则在函数定义时就不能再给出默认值。 同样如果在定义时给出了默认值: void CRect::SetSize(int l=100, int w=100) { length=l; width = w; } 在声明处就不能再给默认值了。 |
本文转载于唯C教育,【Linux基础】Linux类与对象
http://www.weicedu.com/forum.php?mod=viewthread&tid=69&fromuid=4
(出处: http://www.weicedu.com/)