C ++中的类和对象是什么?
我们可以说Class是一个对象吗?
答案 0 :(得分:48)
一个类就像一个蓝图,一个对象就像一个由该蓝图构建的房子。
您可以拥有许多具有相同布局/布局规划(读取类)的房屋,但每个房屋都是自己的实例(读取对象)。每个人都有自己的主人,家具等。
请注意,还有一些对象的蓝图不是类(例如整数)。
答案 1 :(得分:17)
对象是类的实例。
答案 2 :(得分:6)
我会尝试提供更多的技术解释而不是抽象的解释。我认为像“一个类是蓝图,一个对象是由这个蓝图制成的东西”这样的定义对新手来说是不可能理解的,因为这些定义是抽象的,没有上下文。
类和对象在面向对象的世界中具有纯粹的抽象意义,但为了简单起见,我将把定义简化为更实用的定义。
请考虑以下声明:
int a;
“int”是一种类型,“a”是一个类型为“int”的变量。
C ++提供了各种方法让程序员定义新类型;例如:
typedef int* int_ptr;
int_ptr a;
在此示例中,定义了新类型 int_ptr。 “int_ptr”是一个类型,“a”是一个类型为“int_ptr”的变量。 另一个例子:
struct Point
{
int x;
int y;
};
Point a;
此处,定义了新类型,“Point”和“a”是具有“Point”类型的变量。
那么C ++中的类是什么?类是另一种定义新类型的方法,就像上面提到的其他方法一样。
什么是对象?对象是一个变量,其类型使用class关键字定义。
例如:
class SmartPoint
{
public:
Point(x,y);
Move(x,y);
protected:
int x,y ;
};
SmartPoint a;
在此示例中,定义了新类型,“SmartPoint”和“a”是具有“SmartPoint”类型的变量。
您可能会问,使用“class”关键字或“struct”关键字或“typedef”定义的类型之间有什么不同 - 但这是另一个讨论的问题。
答案 3 :(得分:6)
对象是一些数据,它在运行时内存中有一个地址。
有不同类型的对象(例如int,float等)。您可以创建用户定义的类型,称为“类”。
例如,我可以将Dog定义为一个类......
class Dog {};
...然后创建几个对象,每个对象都是该类的一个实例......
Dog fido;
Dog spot;
答案 4 :(得分:3)
不,对象是类的实例。
答案 5 :(得分:2)
不,对象是类的实例......
除非......
如果您正在实现一个允许您表示类,接口,属性,继承,关联,聚合等的软件设计工具,那么在运行时,是的,您放置在设计器中的每个类都将是一个对象实例班级。好吧,无法帮助自己找到一个如此扭曲和元化的例子。
现在认真地说,一个班级不是一个对象。
答案 6 :(得分:1)
Class
是数据成员和成员函数的集合。
Class
是用户定义数据类型。
Object
是一个类类型变量。
对象也称为类的实例。
每个对象包含类中声明的所有成员(变量和函数)。我们可以使用.
运算符从该类的对象访问任何数据成员或成员函数。
答案 7 :(得分:1)
这是一个神学 我们有一个名为车辆的分类。每辆车都有一些属性,如:
汽车,自行车,卡车,是车辆的一些例子。每个都可能有不同的属性集 这里车辆是一个类,所有属性都是它的成员,汽车,自行车,卡车是班级车辆的对象。
答案 8 :(得分:1)
不,上课不是一个对象。
类是数据类型,对象是类数据类型的变量(实例)。
答案 9 :(得分:0)
C ++支持许多范例,但不支持面向对象编程的“一切都是对象”的范式。类存在于源代码中,但在运行时不存在。即使运行时类型信息也不会将Classes保留为对象,但只提供获取与该类型对应的不透明ID的功能。
答案 10 :(得分:0)
类:类定义特定类型的行为和属性。
对象:对象是类的实例。
例如,如果您的 Dog 名为 Bingo 。
Dog 将是定义其行为和属性的类
Bingo 将是对象,它是 Dog 类的实例
严格地说,Class不是C ++中的Object。 但是在支持反射的C#和Java等语言中,类可以像对象一样使用,但这是一个更高级的主题,并且可能不是原始问题所要求的。
答案 11 :(得分:0)
一个类不是一个对象。
在更简单的C语言中,类类似于struct
类型,但更复杂。
使用C struct
示例作为类比:
struct class_ {
int attribute00;
float attribute02;
...
}
struct class_ object_ = {0, 0.0, ...};
struct class_
的行为类似于class
,object_
的行为类似于object
。
struct class_
内存中没有物理存储,object_
内存中有物理存储。
在人类语言中,单词'house'(如class
)可以在字典中定义为停留的地方,门,窗户和房间,您只能与之交谈你的嘴告诉别人什么是房子。实体房屋(如object
)是一块坚固的建筑房屋,您可以搬进来并与您的家人住在一起。
“房子”一词不占用土地或空间。 实体房屋占用土地和空间。
答案 12 :(得分:0)
类是数据和函数的集合,它是用户定义的数据类型。类是对象的规范。所以你可以说对象是类的变量或对象是类的实例。
答案 13 :(得分:0)
类是逻辑构造,而object是其物理副本。
一个类可以被认为是一个模具,从中创建了多个对象,它们与类
相同对象可以被认为是类的副本。 继承原则的完美范例。
一个类可以被认为是它的子类的父对象 - 对象
答案 14 :(得分:0)
对象是在运行时内存中具有地址的数据或函数,也称为类的实例。 因此object是c ++编程语言的类类型变量或实体。
答案 15 :(得分:-1)
在C ++中,对象本质上是变量,而类是它们的值的类型。
答案 16 :(得分:-1)
简答:在语言C ++中,Java:不。 在像Python这样的语言中:是的
答案 17 :(得分:-1)
这类似于询问猫是否是“我的小猫手套”。
答案 18 :(得分:-1)
定义类时,可以为数据类型定义蓝图。这并没有实际定义任何数据,但它确实定义了类名的含义,即类的对象将包含什么以及可以对这样的对象执行什么操作。
类定义以关键字class开头,后跟类名;和一个由一对花括号括起来的类体。类定义必须遵循分号或声明列表。例如,我们使用关键字class定义Box数据类型,如下所示:
class Box
{
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
关键字public确定其后面的类成员的访问属性。可以在类对象范围内的任何位置从类外部访问公共成员。您还可以将类的成员指定为私有或受保护,我们将在子节中讨论。
答案 19 :(得分:-1)
类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象共有的一组属性或方法。 示例:
class Person {
//..properties
//..methods
}
Object 是类的实例或从类创建。 示例:
Person John = new Person(); //Creating an object of Person class
John.property1 = value; //setting value of property1 for John which is of Person
//Type
答案 20 :(得分:-2)
类和实例都是对象,但面向对象的编程并不强制语言具有类和对象。实例