Что такое класс и объект на С++?
Можно ли сказать, что класс является объектом?
Что такое класс и объект на С++?
Можно ли сказать, что класс является объектом?
Класс похож на план, объект подобен дому, построенному из этого плана.
У вас может быть много домов с одинаковым планом/планом этажей (класс чтения), но каждый из них является собственным экземпляром (прочитанным объектом). У каждого есть свой собственник, мебель и т.д.
Обратите внимание, что есть также объекты, чей план не является классом (например, целыми числами).
Объект - это экземпляр класса.
Объектом являются некоторые данные, которые имеют адрес во временной памяти.
Существуют разные типы объектов (например, int, float и т.д.). Вы можете создавать пользовательские типы, называемые "классы".
Например, я могу определить Dog как класс...
class Dog {};
... и затем создайте несколько объектов, каждый из которых является одним экземпляром этого класса...
Dog fido;
Dog spot;
Я попытаюсь дать больше технического объяснения, а не абстрактного. Я думаю, что такие определения, как "класс - это план, а объект - это нечто, сделанное из этого плана", невозможно понять для новичков просто потому, что эти определения являются абстрактными и неконкретными.
Классы и объекты имеют чисто абстрактный смысл в объектно-ориентированном мире, но для простоты я уменьшу определение до более практичного.
Рассмотрим следующее утверждение:
int a;
"int" - это тип, а "a" - это переменная, которая имеет тип "int".
С++ предоставляет различные способы, позволяющие программисту определить новые типы; например:
typedef int* int_ptr;
int_ptr a;
В этом примере определяется новый тип int_ptr. "int_ptr" - это тип, "a" - это переменная, которая имеет тип "int_ptr". Другой пример:
struct Point
{
int x;
int y;
};
Point a;
Здесь определяется новый тип, "точка", а "a" - это переменная с типом "точка".
Итак, что такое класс в С++? Класс - это еще один способ определить новый тип, как и другие способы, упомянутые выше.
Что такое объект? Объект - это переменная, которая имеет тип, который был определен с помощью ключевого слова class.
Например:
class SmartPoint
{
public:
Point(x,y);
Move(x,y);
protected:
int x,y ;
};
SmartPoint a;
В этом примере определяется новый тип, "SmartPoint", а "a" - это переменная, которая имеет тип "SmartPoint".
Вы можете спросить, чем отличается тип, определенный с помощью ключевого слова "class" или "struct" или "typedef", но это вопрос для другого обсуждения.
Нет, объект является экземпляром класса.
Нет, объект является экземпляром класса...
Если только...
Если вы внедряете инструмент разработки программного обеспечения, который позволяет вам представлять классы, интерфейсы, свойства, наследование, ассоциации, агрегации и т.д., то во время выполнения да, каждый класс, который вы размещаете в конструкторе, будет экземпляром объекта класс. Хорошо, я не мог помочь себе найти пример, извращенный и мета.
Теперь серьезно, класс не является объектом.
Class
представляет собой набор элементов данных и функции-члена.
Class
- это пользовательский тип данных.
Object
- это переменная типа класса.
Объекты также называются экземплярами класса.
Каждый объект содержит все члены (переменные и функции), объявленные в классе. Мы можем получить доступ к любому элементу данных или функции-члену из объекта этого класса с помощью оператора .
.
Вот анонология.
у нас есть классификация, называемая транспортными средствами. Каждый автомобиль будет иметь некоторые свойства, такие как:
Автомобиль, велосипед, грузовик, являются примерами автомобилей . Каждый из них может иметь различный набор свойств.
Здесь транспортные средства - это класс, и все его свойства - это элементы, а автомобили, мотоциклы, грузовики - это объекты транспортных средств класса.
Нет, класс не является объектом.
Класс - это тип данных, а объект - это переменная (экземпляр) типа данных класса.
С++ поддерживает многие парадигмы, но не стиль объектного ориентирования "все является объектом". Классы существуют в исходном коде, но не существуют во время выполнения. Даже информация типа времени выполнения не сохраняет Classes как объект, но обеспечивает возможность получения непрозрачных идентификаторов, соответствующих типу.
Класс: класс определяет поведение и свойства определенного типа.
Объект: объект является экземпляром класса.
Например, если у вас есть Собака с именем Bingo.
Dog будет class, определяющим его поведение и свойства
Bingo будет объектом, являющимся экземпляром класса Dog
Строго говоря, класс не является объектом в С++. Но в таких языках, как С# и Java, которые поддерживают отражение, классы могут использоваться как объекты, но это более продвинутая тема и, возможно, не то, что задает исходный вопрос.
Класс не является объектом.
В более простом языке C класс похож на тип struct
, но более сложный.
Использование примера C struct
как аналогии:
struct class_ {
int attribute00;
float attribute02;
...
}
struct class_ object_ = {0, 0.0, ...};
struct class_
действует как a class
, а object_
действует как a object
.
struct class_
не имеет физической памяти в памяти, object_
имеет физическое хранилище в памяти.
В человеческом языке слово "дом" (как class
) может быть определено в словаре как место для проживания, с дверями, с окнами и комнатами, которые вы можете говорить только своим ртом рассказать другим людям, что такое дом. Физический дом (как object
) - это твердый дом на земле, на которой вы можете передвигаться и оставаться с семьей.
Слово "дом" не занимает физическое занятие землей или пространством. Физический дом занимает землю и пространство.
Класс - это набор данных и функций, его пользовательский тип данных. Класс - это спецификация для объекта. Таким образом, вы можете сказать, что объект является переменным для класса или объекта - это экземпляр класса.
Класс является логической конструкцией, а объектом является его физическая копия.
Класс можно рассматривать как форму, из которой создаются несколько объектов, которые выглядят идентично классу
Объекты могут рассматриваться как углеродные копии класса. Прекрасный пример принципа наследования.
Класс можно рассматривать как родительский элемент его дочерних объектов - объектов
Объект - это данные или функция, которая имеет адрес во временной памяти и также называется экземплярами класса. Таким образом, объект является переменной типа класса или сущностью языка программирования С++.
Это похоже на вопрос, является ли кошка "Мои котята".
В С++ объекты по существу являются переменными, а Classes - типами их значений.
Короткий ответ: в языках С++, Java: Нет. В таких языках, как Python: Да
Когда вы определяете класс, вы определяете схему для типа данных. Это фактически не определяет какие-либо данные, но определяет определение имени класса, то есть то, что будет состоять из объекта класса и какие операции могут выполняться на таком объекте.
Определение класса начинается с класса ключевого слова, за которым следует имя класса; и тело класса, заключенное в пару фигурных скобок. Определение класса должно выполняться либо точкой с запятой, либо списком деклараций. Например, мы определили тип данных Box с использованием класса ключевого слова следующим образом:
class Box
{
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
Ключевое слово public определяет атрибуты доступа для членов класса, которые следуют за ним. Доступ к публичному члену можно получить извне класса в пределах области объекта класса. Вы также можете указать членов класса как частные или защищенные, которые мы обсудим в подразделе.
Оба класса и экземпляры являются объектами, но объектно-ориентированное программирование не заставляет язык иметь классы и экземпляры.