Re[2]: Язык С и инкапсуляция
От: Tilir Россия http://tilir.livejournal.com
Дата: 14.05.15 09:04
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Функции работы с файлом как раз являются таким примером.


Мне нравится обсуждение возможных проблем концепции opaque pointer, которая лежит в основе FILE*

Автор справедливо замечает: решение с opaque data type обрекает вас на выделение объектов в куче. Но это иногда может быть не совсем эффективно. А иногда -- совсем не эффективно. Как решение автор предлагает shadow data types:

      typedef struct  
      {  
        unsigned char size_shadow[16];  
      } wibble;  
 
      void wopen(wibble *, int);


В инкапсулированной части:

    typedef struct  
    {  
        grommet g;  
        flange f;  
    } wibble_rep;


Это позволяет даже на C размещать инкапсулированные объекты на стеке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.