《C++面向对象软件设计及构建》文章翻译:2.1类和对象,2.1 Classes and Objects
在C++中,使用关键 字 class 来定义新的类。 在C++中, 以下做法是错误的:定义两个具有相同名字 的类;或者, 将同一个类定义两次。 以下代码,定义了一个名为Frame 的类, 它代表着图形用户界面系统中的窗口的外边框。
class Frame { // 代表 一个图形用户界面窗口
/* 类定义的主体,位于花括号之间 */
};
日后会简短地说明Frame 类定义的主体。类定义以分号结尾。
在上面的Frame 类定义中,展示了两种不同形式的注释。连续 的两个斜线符号 // ,表示 的是,注释内容到此行末尾结束。 而多行的注释,以 /* 开头,以对应的 */ 结束。
在一个面向对象的程序中,一般会有若干个或者狠多个不同的类。在窗口系统中,可能会包含以下这些其它类:
class Message {...}; // 一行不变的文字
class TextBox {...}; // 一行可编辑的文字
class Button {...}; // 一个选择器,可“按下”
这些类,日后就会看到并用到。
创建某个类的某个对象的最简单方式,就是,以该类的名字来声明一个变量。例如,利用上面定义的Frame 类,可声明一个Frame 对象:
Frame display(...);
这行代码,会声明一个对象,由变量
display
来标识。此处代码
中的省略号
(
也就是,那一砣
...)
,并不是C++语法成分,
它只是用来代替那些用于
对声明的对象进行初始化的值。
当我们给出Frame 类的完整定义之后,就能够得知,此处该传入一些什么值。
就像在C 语言和其它狠多语言中那样,在C++中,要求类的定义在使用该类的声明语句之前即存在。这样,C++编译器就能够比较容易地检查,类的定义、在声明中对该类的使用、以及其它语句之间是否一致。这是C++的特性之一,它是一个静态类型的面向对象的语言。程序猿必须确保,程序代码的组织情况满足这种“先声明后使用”的规则。日后,我们会看到,如何以一种直观的方式来完成这种组织。
对于对象的声明,展示了,类型(type)这个概念与类(class)这个概念之间的强烈联系。举个例子,比较以下两个声明:
int counter;
Frame display(...);
第一 行声明代码,创建了一个变量,其类型是整型( int ),其名字是 counter 。类型 int ,决定 了,对于 该变量,能够做出哪些操作。例如, + 、 - 、 < 和 = 都是有效的操作。如果 妳尝试对它执行无效的操作,那么,编译器会发出警告或错误消息。类似 地,第二行声明代码,创建了另一个变量 (对象) ,其类型是Frame,其名字是 display 。正像对于所有类型 都要做的事情那样,编译 器会检查, 对 display 所做的那些操作是否有效。由于Frame 是由程序猿定义的类型,所以,对于 它的对象来说,那些有效的操作,即是在Frame 类中定义的那些操作。
利用这同一个类,可以创建狠多对象。例如,可按照以下代码来创建多个Frame 对象:
Frame display(...), viewer(...);
Frame editor(...);
这两行声明代码,创建了三个Frame 对象。注意
,在一行声明代码中可以创建多个对象,在
display
和
viewer
那一行就是这样做的。
在这种情况下,要使用逗号来将相邻的变量名分隔开。
同样地,要注意到,就像这个示例中展示的那样,同一个类可用于不同的声明代码中。
在C++中, 类(class),即是一个类型(type)。声明某个变量 ,用来代表某个对象,其语法,就与声明某个变量用来代表某个预定义或内置的类型(例如 int 、 char 或 float )一样。对于对象 的类型进行检查的规则,就与对预定义类型进行检查的规则相同。例如,只有 当两个对象是同一个类的对象时,其中 一个对象才能被赋值到另一个对象(至少目前是如此)。例如, 可将(上面代码中定义的) viewer 赋值给 display 。然而 ,如果 msg 是Message 类的某个对象,那么 ,无法将 msg 赋值给 viewer ,也无法将 viewer 赋值给 msg - 两种情况 下,这两个变量都是不同类的对象,因而表示不同的类型。
任务
1. 编写 三行声明代码,它们创建四个Frame 对象和两个Message 对象。使用省略号来表示用于初始化的那些值。
未知美人
Хорошего бухгалтера трудно найти. Бухгалтер Вера Павловна уже 10 лет в федеральном розыске.
Your opinionsHxLauncher: Launch Android applications by voice commands