Страницы

Поиск по вопросам

понедельник, 1 апреля 2019 г.

Объектно-ориентированный код в C

Поскольку OO - это шаблон программирования, а не неотъемлемое свойство языка, он должен быть применим и к C. Как пишут ОО-код в C, когда это нужно и когда нельзя задействовать C++?


Ответ

Ну, суть сказали - использовать структуры для хранения контекста конкретных объектов. И передавать соответствующую структуру аргументом в функции. Которые уже будут работать с этой структурой как с классом =3 Пример: typedef struct { // контекст объекта с чем угодно внутри int x; int y; } nya; typedef nya * pnya;
void nya_construct (pnya this) // конструктор { this->x = 0; this->y = 0; }
void nya_incx (pnya this) // метод 1 { this->x++; }
void nya_decy (pnya this) // метод 2 { this->y--; }
int main (void) // использование { pnya first = (pnya)malloc(sizeof(nya)); // объект 1 pnya second = (pnya)malloc(sizeof(nya)); // объект 2 nya_construct(first); // конструируем nya_construct(second); nya_incx(first); // исполняем метод в контексте объекта 1
free(first); // удаляем. Деструктора нет, его не вызываем free(second); } Ну, в таком духе.

Комментариев нет:

Отправить комментарий