Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: 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.
Ради этого и были придуманы дескрипторы - для сокрытия информации о внутреннем устройстве.
Так, разработчики операционной системы могут модернизировать свои окошки, не влияя на
существующий код приложений.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: