Дополнительный параметр каждого метода, определяющий экземпляр
структуры (класса), к которому следует применить этот метод, рекомендуется
реализовывать как указатель. Хотя в языке C и допускаются параметры, имеющие тип
структуры, передача значения структуры в качестве параметра связана с
переписыванием значения этой структуры в автоматическую память соответствующей
функции, что не только связано с потерей эффективности, но и семантически
неверно, когда структура определяет объект, так как применение метода должно
изменить значения соответствующих полей этой структуры (они представляют
атрибуты объекта). Пример передачи параметров одному из методов (этот метод
входит в список методов, приведенный в комментарии к определению структуры
Window): add_to_selections (shape, self)
struct Window* self;
struct Shape* shape;
|