Автор: oleg_alexeev (26.02.2007 в 21:18)
Вопрос, как говорится, на засыпку ... =))
Объект - базовое понятие объектно-ориентированного программирования.
И, как все базовые понятия, не имеет точного определения. Можно давать только разные описания,
помогающие интуитивно почувствовать что это.
В конкретном же случае языков C/C++ объектом является экземпляр структуры/класса,
находящийся где-то в памяти (с этим определением вполне можно поспорить, уточнить,
расширить и т.п.).
пример:
struct Window
{
int x, y; // положение
int w, h; // размеры
... // прочая лабуда
};
void * CreateWindow()
{
Window *p = new Window;
p->x = 0;
p->y = 0;
...
return p;
}
void CloseWindow(void *p)
{
delete ((Window *)p);
}
|
Здесь структура Window - это описание структуры объекта (извиняюсь за тавтологию).
В функции CreateWindow в памяти создается экземпляр этой структуры и инициализируются
её поля, т.е. создается объект. Из функции возвращается указатель на объект. Этот указатель
может называться идентификатором объекта, поскольку он определяет (идентифицирует)
этот (и только этот) объект.
В функцию CloseWindow передается идентификатор объекта. Там он преобразуется в
указатель на объект и затем объект уничтожается.
Можно заметить, что вызывающему коду совершенно не нужно знать объявление структуры Window.
Ради этого и были придуманы дескрипторы - для сокрытия информации о внутреннем устройстве.
Так, разработчики операционной системы могут модернизировать свои окошки, не влияя на
существующий код приложений.