【Linux基础】Linux类与对象

类与对象的概念

对象(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;

}

定义CRect类的对象,定义对象的格式: 类名 对象名1,对象名2,……

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/)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值