在C++中,对象和变量是程序中存储和操作数据的两个主要概念。
对象和变量
所有计算机都有内存,称为RAM(随机存取存储器的缩写),可供您的程序使用。您可以将 RAM 视为一系列编号的邮箱,每个邮箱可在程序运行时用于保存一段数据。
在一些较旧的编程语言(如 Applesoft BASIC)中,您可以直接访问这些邮箱(语句可以说类似go get the valuestored inMailbox number 7532)。
在 C++ 中,不鼓励直接内存访问。相反,我们通过对象间接访问内存。对象是一个可以存储值的存储区域(通常是内存),并具有其他关联的属性(我们将在以后的课程中介绍)。编译器和操作系统如何为对象分配内存超出了本课程的范围。但这里的关键点是,与其说获取存储在邮箱号 7532 中的值,不如说获取这个对象存储的值。这意味着我们可以专注于使用对象来存储和检索值,而不必担心它们实际放置在内存中的位置。
对象可以命名或未命名(匿名)。命名对象称为变量,对象的名称称为标识符。在我们的程序中,我们创建和使用的大多数对象都是变量。
在一般编程中,术语“对象”通常指内存中的未命名对象、变量或函数。在 C++ 中,术语“对象”的定义较窄,不包括函数。
变量实例化
为了创建变量,我们使用一种特殊的声明语句,称为定义(稍后我们将阐明声明和定义之间的区别)。
下面是定义名为 x 的变量的示例:
int x; // define a variable named x, of type int
在编译时,当编译器看到这条语句时,它会向自己记录我们正在定义一个变量,并将其命名为x,并且它的类型为int(稍后会详细介绍类型)。
当程序运行时(称为runtime),变量将被实例化。实例化是一个奇特的词,意味着将创建对象并为其分配内存地址。变量必须先实例化,然后才能用于存储值。举例来说,假设变量x在内存位置 140 处实例化。每当程序使用变量 x 时,它将访问内存位置 140 中的值。实例化的对象有时称为实例。
数据类型
到目前为止,我们已经介绍了变量是可以存储数据值的命名存储区域(数据到底如何存储是未来课程的主题)。数据类型(通常称为type)告诉编译器变量将存储什么类型的值(例如数字、字母、文本等)。
在上面的示例中,我们的变量x被指定为int类型,这意味着变量 x 将表示一个整数值。整数是可以不带小数部分的数字,例如 4、27、0、-2 或 -12 。简而言之,我们可以说x是一个整型变量。
在 C++ 中,变量的类型必须在编译时(编译程序时)已知,并且如果不重新编译程序,则无法更改该类型。这意味着整数变量只能保存整数值。如果您想存储其他类型的值,则需要使用不同的类型。
整数只是 C++ 开箱即用支持的众多类型之一。出于说明目的,这是使用数据类型double定义变量的另一个示例:
double width; // define a variable named width, of type double
C++ 还允许您创建自己的用户定义类型。这是我们在以后的课程中会经常做的事情,也是 C++ 强大的一部分。
定义多个变量
通过用逗号分隔名称,可以在单个语句中定义多个相同类型的变量。以下 2 段代码实际上是相同的:
int a;
int b;
int a, b;
当以这种方式定义多个变量时,新程序员往往会犯两个常见错误(都不严重,因为编译器会捕获这些错误并要求您修复它们):
第一个错误是在按顺序定义变量时为每个变量指定类型。
int a, int b; // wrong (compiler error)
int a, b; // correct
第二个错误是试图在同一个语句中定义不同类型的变量,这是不允许的。不同类型的变量必须在单独的语句中定义。
int a, double b; // 错误 (compiler error)
int a; double b; // 正确 (但不推荐)
// 正确并推荐 (easier to read)
int a;
double b;
尽管该语言允许您这样做,但请避免在单个语句中定义相同类型的多个变量。相反,在单独的语句中在其自己的行上定义每个变量(然后使用单行注释来记录其用途)。
概括
在C++中,我们使用变量来访问内存。变量具有标识符、类型和值(以及此处不相关的其他一些属性)。变量的类型用于确定如何解释内存中的值。
在下一课中,我们将了解如何为变量赋值以及如何实际使用它们。
原创文章,作者:jkhxw,如若转载,请注明出处:https://www.jkhxw.com/introduction-to-objects-and-variables-in-cpp/