Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的类和对象是什么+;? C++中的类和对象是什么?_C++ - Fatal编程技术网

C+中的类和对象是什么+;? C++中的类和对象是什么?

C+中的类和对象是什么+;? C++中的类和对象是什么?,c++,C++,我们可以说一个类是一个对象吗?一个对象是一个类的一个实例。不,一个对象是一个类的一个实例。一个类就像一个蓝图,一个对象就像一座根据这个蓝图建造的房子 您可以有许多具有相同布局/楼层平面的房屋(read类),但每个房屋都是它自己的实例(read对象)。每个人都有自己的主人、家具等 请注意,还有一些对象的蓝图不是类(例如整数)。这类似于询问猫是否是“我的小猫手套” 对象是一些数据,在运行时内存中有一个地址 有不同类型的对象(例如int、float等)。您可以创建用户定义的类型,称为“类” 例如,我可

我们可以说一个类是一个对象吗?

一个对象是一个类的一个实例。

不,一个对象是一个类的一个实例。

一个类就像一个蓝图,一个对象就像一座根据这个蓝图建造的房子

您可以有许多具有相同布局/楼层平面的房屋(read类),但每个房屋都是它自己的实例(read对象)。每个人都有自己的主人、家具等


请注意,还有一些对象的蓝图不是类(例如整数)。

这类似于询问猫是否是“我的小猫手套”

对象是一些数据,在运行时内存中有一个地址

有不同类型的对象(例如int、float等)。您可以创建用户定义的类型,称为“类”

例如,我可以将Dog定义为一个类

class Dog {};
Dog fido;
Dog spot;
。。。然后创建几个对象,每个对象都是该类的一个实例

class Dog {};
Dog fido;
Dog spot;

C++支持许多范例,但不是面向对象编程的“一切都是对象”风格。类存在于源代码中,但在运行时不存在。即使运行时类型信息不保存类作为对象,但只提供了一种与类型对应的不透明ID的能力。C++中的

< P>,对象本质上是变量,类是它们的值的类型。

< P>两个类和实例都是对象,但是面向对象的编程并不能强制语言具有类和实例。

< P>简短的回答:在语言C++中,java:不是。
在Python这样的语言中:Yes

:类定义特定类型的行为和属性

对象:对象是类的实例

例如,如果你有一只名叫宾果的狗

  • 将是定义其行为和属性的

  • Bingo将是一个对象,它是Dog类的一个实例

严格地说,类不是C++中的对象。


但在支持反射的C#和Java等语言中,类可以像对象一样使用,但这是一个更高级的主题,可能不是原始问题所要求的。我将尝试给出更多的技术解释,而不是抽象的解释。我认为“类是一个蓝图,对象是由这个蓝图生成的”这样的定义对于新手来说是不可能理解的,因为这些定义是抽象的,没有上下文

在面向对象的世界中,类和对象具有纯粹的抽象含义,但为了简单起见,我将把定义简化为更实用的定义

考虑以下陈述:

int a;
“int”是一种类型,is“a”是一种类型为“int”的变量

C++提供了多种方式让程序员定义新类型;例如:

typedef int* int_ptr;
int_ptr a;
struct Point
{   
    int x;
    int y;
};
Point a;
class SmartPoint
{
public:
   Point(x,y);
   Move(x,y);
protected:
   int x,y ;
};

SmartPoint a;
在本例中,定义了一个新类型。 “int_ptr”是一种类型,“a”是一种类型为“int_ptr”的变量。 另一个例子:

typedef int* int_ptr;
int_ptr a;
struct Point
{   
    int x;
    int y;
};
Point a;
class SmartPoint
{
public:
   Point(x,y);
   Move(x,y);
protected:
   int x,y ;
};

SmartPoint a;
这里定义了一个新类型,,“Point”,而“a”是一个类型为“Point”的变量

< C++中的类是什么?类是定义新类型的另一种方法,就像上面提到的其他方法一样

什么是物体?对象是一个变量,其类型是使用class关键字定义的

例如:

typedef int* int_ptr;
int_ptr a;
struct Point
{   
    int x;
    int y;
};
Point a;
class SmartPoint
{
public:
   Point(x,y);
   Move(x,y);
protected:
   int x,y ;
};

SmartPoint a;
在本例中,定义了一个新类型,“SmartPoint”,而“a”是一个类型为“SmartPoint”的变量


然后,您可能会问,使用“class”关键字或“struct”关键字或“typedef”定义的类型之间有什么不同,但这是另一个讨论的问题。

不,对象是类的实例

除非

如果您正在实现一个允许您表示类、接口、属性、继承、关联、聚合等的软件设计工具,那么在运行时,是的,您放置在设计器中的每个类都将是该类的对象实例。好吧,我忍不住发现了一个如此扭曲的例子


说真的,类不是对象。

类不是对象

在更简单的C语言中,类类似于
结构
类型,但更复杂。 使用C
struct
示例作为类比:

struct class_ {
    int attribute00;
    float attribute02;
    ...
}

struct class_ object_ = {0, 0.0, ...};
结构类
的行为类似于
对象
的行为类似于
对象
结构类
在内存中没有物理存储,
对象
在内存中有物理存储

在人类语言中,一个词“house”(作为
)可以在字典中定义为居住的地方,有门,有窗,有房间,你只能用嘴来告诉别人什么是房子。实体房屋(如
对象
)是一种坚固的房屋,位于一块你可以搬进去和家人住在一起的土地上

“房子”一词不表示实际占用土地或空间。
物理房屋占用土地和空间。

类是数据成员和成员函数的集合

Class
是用户定义的数据类型

对象
是类类型变量

对象也称为类的实例


每个对象包含类中声明的所有成员(变量和函数)。我们可以使用
操作符从该类的对象访问任何数据成员或成员函数

定义类时,定义数据类型的蓝图。这实际上并不定义任何数据,但它定义了类名的含义,即类的对象将由什么组成,以及可以对此类对象执行什么操作

类定义以关键字class开头,后跟类名;和类主体,由一对花括号包围。阶级定义