温故C++: 类

来源:互联网 发布:订餐管理数据流程图 编辑:程序博客网 时间:2024/05/19 18:42

一、什么是类

类可以说的是C++的基础。

C++中,所有的数据都是类(准确的说是类的实例);C++推崇使用类的去思考和抽象,尽管C++依然支持C风格代码编写,但更提倡使用类去封装、层次化、模块化。

什么是类?类是一系列具有相同或相似属性和行为的实体的集合,是对这些实体的一种模板式抽象。

例如,正常的人都有一头、一身、两手、两脚,可以思考、工作、走路,这些都是所有正常人这个类的都具有的属性和行为;当女娲造人时,女娲会就按照正常人这个类模板捏泥人并赋予他们活力。

C++中,与类对应的术语还有对象或者实例。类是对象(或实例)的抽象集合。例如,【中华民族】是中国13亿人和海外侨胞的集合,而每一个中国人或者海外侨胞是中华民族的一个对象(或实例)

 

二、类的声明和定义

具体到C++中,类最具象的表示:变量+函数。变量表征相同或相似的属性,函数体现相同或相似的行为。

在C++中,声明一个类很简单:

class 类名;

或者

struct 类名;

(struct关键字是为了和C兼容,但在C++中,struct和class关键字的区别是默认的访问权限和继承权限不同,除此之外均相同)

常见的类定义语法:

class [类名]{        [成员]        [成员]        ...}[对象名][,对象名][,对象名]...;

(注,上面的语法仅是合法语法的一种,并未考虑模板和继承,实际上C++允许的类定义语法比上面的语法要复杂的多)

一个类定义的示例:
 

class Head;//头class Body; //身class Hand;//手class Foot;//脚class Person{private:       Head head;       Body body;       Hand leftHand,rightHand;       Foot leftFoot;       Foot rightFoot;public:       void Think(){}       void Work(){}       void Walk(){}};

像下面的定义都是合法的

class{}; //一个匿名类,不能创建对象class{} a,b,c;//一个匿名类,同时创建对象a,b,c,但不能创建新的对象了


 


 三、类的实例化

类的实例化,或者说生成类的对象,C++中有两种方法:

①类名 对象名(或实例名)

②使用new 

例如:

Person  ZhangSan,LiSi;Person  WangWu;Person  *ZhaoLiu=new  Person;

①和②的区别在于,①对象的数据保存在栈空间中,②对象保存在堆空间中(再往后,就是资源管理,内存泄露之类的话题了)

上面示意代码,ZhangSan,LiSi,WangWu的数据栈空间,ZhaoLiu在堆空间.

(特别的,我这样看待 Person 和 Person *,它们是两种不同的类,后者为指针类,继承于void *类)

原创粉丝点击