对象可以被视为变量吗?

时间:2011-10-18 18:04:34

标签: c++

我在保持术语类,对象,变量和数据类型方面遇到了一些麻烦。

可以将类视为数据类型吗? 可以将对象视为变量吗?

另外,技术上有什么区别?

6 个答案:

答案 0 :(得分:6)

这些术语有两种不同的用途:

  • 随意使用:

    • 类:带有方法和字段的抽象数据类型。
    • 对象:类的实例。
    • 变量:某些存储的语言级名称(即:程序员给出的名称)。
    • 数据类型:键入变量(或某些未命名的存储区)可以拥有的内容。
  • C / C ++标准用法(来自C标准,它不是面向对象的语言:

    • 对象:某些存储,无论是否有名称。
    • 类类型的对象:某些存储,其数据类型为class(= struct)。

答案 1 :(得分:4)

变量是具有直接名称的对象。

int i;

我是变量和对象。

int* p = new int;

* p是一个对象,但不是一个变量。

类和类型几乎完全相同,除了类型包括像int这样的基本类型。实际上,它们非常可互换 - 以及变量/对象。 C ++标准的实际情况是,很少有规则适用于类而不是类型,变量适用于变量而不是对象。

答案 2 :(得分:2)

一个类可以被认为是一组范围函数和私有变量。 对象是类的实例,例如toyata可以是名为Car的类的对象实例。 变量是标识符。它代表一个标识符,其值和状态可以及时更改 数据类型表示数据类型。

例如,假设Car是一个类。然后声明:

Car toyata;

具有类,数据类型,标识符(变量)和对象。

答案 3 :(得分:1)

数据类型强烈指示某些数据的使用方式(在强类型语言中,如c ++)。例如,int数据类型可以让您知道可以执行传统上与整数(整数)相关联的操作。当某些内容具有char数据类型时,它会让您知道它可以像字符一样使用(例如,字母表中的字母)。这两个是基本数据类型的示例 - 内置于该语言中。

类(通常是*)是一种组合某些数据的方法,并为其提供唯一的接口来访问和修改该数据。与添加或减去整数或划分浮点数(不截断)的方式相同,放在类中的函数决定了程序的使用方式。类似地,由其他人创建的类提供了一个接口,以便您可以像使用整数一样使用这些类的对象。

变量是某些数据类型的单个实例。如果你有一些int number = 0;,那就是一个变量。这与“常数”形成对比,即不可修改的符号,如const double pi = 3.14159;

“对象”这个词可能被认为是含糊不清的 - 大多数情况下,当人们使用“对象”这个词时,他们的意思是“某些classstruct的实例”。 有时候,它用于引用类。这可能会让人感到困惑,但随着您对这些条款感到满意,这一点会变得更加清晰。

总之,类可以是数据类型(通常是*)。对象可以是变量(或者常量,就此而言)。你走在正确的轨道上!您阅读或使用这些术语的次数越多,区别就越清晰。

*当我说“通常”时,我的意思是这 - 通常在使用c ++的过程中,您将遇到的所有代码都会使用类来以某种方式表示数据。但是,在极少数情况下,有人会想到创建一个纯静态接口的类 - 没有数据。在他们的辉煌时刻,他们决定让建造者变得私密,禁止实例化(制造所谓的“单身人士”)。我从未将这些称为类型,或者听到其他人将它们称为类型。我很高兴能够对此予以纠正,但就目前而言,这就是我的立场。

答案 4 :(得分:0)

是的,您可以将类视为数据类型,您也可以将的实例视为变量。

但是一个类可以不仅仅是一种数据类型 - 它支持捆绑方法和数据。

如果您试图理解面向对象的设计与非面向对象的设计之间的区别,那么区分简单数据和属于类的数据是有用的。在C中,数据是惰性的。单个变量或结构只是信息的容器。您可以将函数与该数据相关联,并且您可以采用约定来处理该数据,但关联和约定必须由超出该语言的某些协议强加。在像C ++这样的面向对象语言中,方法可以是对象的一部分。可以在对象,方法和字段级别定义数据访问。支持继承作为语言功能。

进入技术细节:

Class大致与数据类型同义。变量大致与对象同义。类是事物的抽象表示。这是一种描述而不是事物本身。正如其他人所说,术语对象可能含糊不清 - 指的是一个类或该类的实例。更准确地说,对象(或类)的实例是变量。

答案 5 :(得分:-1)

类和数据类型是一回事。把它们想象成房子的蓝图。对象是基于这些蓝图构建的房屋。变量是一个地址标签,指向由蓝图制作的房屋。指针与变量相同,它只是一种定位已构建的特定房屋的方法,因此可以对其进行修改。

希望这有帮助。