[转]Class与Struct的本意

上期的"译名研究"讨论了"对象(object)",软件中又是如何定义这种"对象"的呢?以C++
为例,它通过Class来定义对象(的类型)。Class是在传统的数据结构(如C中的Struct)中加入
一些称为成员函数(Function)的过程(Procedure),这种过程赋予了对象以动作。下面将笔者
对类的理解介绍给读者,以供参考。
类(Class)应理解为"对象的类型",是创建一类对象的原型(即关键性的定义)。与C中的
Struct一样,C++中的Class也是一种数据结构,不同的只是这儿的"数据"是广义的数据,它包
含处理常规(即狭义)数据的过程(函数、程序等)。如果把Class这种数据结构理解为"广义数
据类型的定义",即"对象类型的定义",以后的问题就好理解了。同理,C中的Struct应理解为
"(狭义)数据类型的定义",对此笔者的认识也有一个过程的。初学C语言时,十分赞同谭浩强
先生把Struct译为"结构体",后来才明白:Struct不是一种"体",而是一种"类",一种(狭义的
)数据类型(的定义)。9是一个(不是一种)整数,9.26是一个实数,9和9.26是一种实实在在的
数,规定了大小的概念实体,而"整数"和"实数"却是一种数的类型,是一种概念,一种许多实体
的抽象。
C语言通过Struct定义自己的、可以解决各种特殊问题的数据类型。假如通过"学号、姓
名、性别、年龄、成绩、住址"就可以表示"学生"这一类型的话,借助C中的Struct就可以作
如下的定义:
Struct Student {int num;char name[20];char sex; int age;float score;char ad
dr[30];};而[Struct]Student S1,S2,S3说明了S1、S2、S3;是三个学生,他们有各自的学号
、姓名、性别、年龄、成绩和住址。显然,S1、S2、S3和num、name、score……同属"变量"
范畴,表示某个实体(即该实体的名字、代号);Student则和int、char、float同属"变量类型
"的范畴,说明该变量属于何种(数据)类型。
Class与int、char、float、struct student一样,用来定义和说明广义数据(实乃对象
)的类型的。正如Struct是人们定义自己的数据类型的工具,Class则是程序员定义自己的对
象类型的手段。比如:class Complex {double realpart;double imagpart;double magnit
ude();double direction();};定义了一类对象:Complex(复数),其中除了定义某个复数的实
部(realpart)与虚部(imagpart)以外,还规定了两个函数:magnitude()和direction(),以分
别求出该复数的大小(即实数的平方加虚部的平方之后再开根号后的值。当然这儿没有列出
具体的"过程")和方向。而Complex C1、C2、C3;就说明C1、C2、C3为三个对象,即三个具体
的复数,这儿的Complex是由Class所定义的对象类型的名称,C1,C2,C3则是由Complex所说明
的三个对象的名称。
如何译Class,笔者和谭先生一样,曾把它译为"数程体",即数据与程序的集合体,颇以为
较到位,所以第二版《英汉计算机词汇》(清华大学出版社1997年版)中对Class有如下示的译
名:"[00P](定义)数程体(这种类型的关键字)"。读者看完上文后一定会明白,这种译名是不
到位的,因此将来第三版《英汉计算机词汇》已把这个译名改为:"[C++]((广义)数据)类(型
),(定义)对象类型(的关键字)。"这才是较为到位的译法。
可见,Class与Struct是定义(广义)数据类型的编程语句(即关键字),它们所定义的内容
(如上示的Struct、Complex)是一种观念,一种概念集合;而它们所定义的内容的具体取值即
S1、S2、S3、C1、C2、C3,才是实体,即对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值