引用:类是C++中最重要的特征。C++语言的早期版本被命名为“带类的C”。
引用:最简单地说来,类就是定义了一个新的类型和一个新的作用域。
写本文之前,我曾停下来考虑过:怎样才能概括出类?确切地说,我们从依葫芦画瓢开始一步一步写自己的类,慢慢地都会把类给学会。这中间可能要走一段弯路,总有一天会“蓦然回首,那人却在灯火阑珊处。”但是,要自己总结出什么是类,似乎还有点难度。
C++之前的struct被叫做“结构体”,这个名字起得好,把一定的数据按某个结构组织起来,要取一起取、要存一起存、要处理一起处理。严格说来,即使不使用结构体也未必写不出同样功能的程序。但是结构体这种组织结构明显更利于编写与理解。
类与C时代的结构体比,用“封装”代替了“组织”。“封”的概念是类的组织结构未必需要对外公布,那么,不对外公布结构的结构怎样被操作?类之所以可以这样做,是因为类允许亲自定义操作细则,而露出墙外的只是最简单的操作方法(即接口)。这就好比一辆汽车,司机未必需要懂得发动机原理、传动原理,只要学会几个简单的动作就可以驾驶。
那么,一旦类被“封装”,它与结构体相比就出现了另一个特性:抽象。结构体就是一个五脏六腑都让人看得清清楚楚的组织,而类却是只露一枝红杏在外,其余都被裹得严严实实。类的使用者可以凭这枝红杏来想像园子里的美景,他无权也没必要关心园子里的细节。
我曾经给一个不懂类的朋友打过一个比方:如果你要骑自行车,你可能要先看一看是否需要打气,而把自行车定义成类以后,你只要发出“骑”命令即可,是否需要打气由类自己去判断并实现。类的这个优点被我发现后,我立即将我自己编写的函数库改成了类库。(包括ASP的函数库也全部写成了类库,这不属于本文要讨论的范畴。)
统观一个类的组成,它就是由“成员”组成的。从形式上分,成员包括成员变量和成员函数。(其中成员变量不一定是简单变量,还可以是其它类的对象),从可访问性上分,成员包括公有、私有和保护成员。于是它们可以组合出二三得六种不同特性的成员。
补充说明一点,本文中提到struct时指明了“C时代的”,因为C++中也是struct,它也是定义类的关键词。struct和class的区别在于“在类的左花括号之后、第一个访问标号之前定义的成员的访问级别”。如:
关键词 MyClass
{
int i;//特殊
public:
int j;//公有
private:
int k;//私有
};
其中i究竟是公有的还是私有的,依赖于关键词是class还是struct。
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
