Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > *void


Автор: Kakadu 28.4.2008, 21:43
вот прочитал у Страурструпа упоминание про тип *void. Никак не понимаю где это пргождается. Мне говорят: "представь что строишь лист для хранения произвольных типов. Какого типа указатель ты опишешь в конструкторе такого листа?". А я вот сижу и не втыкаю. Решил у Вас спросить!

Автор: v2v 28.4.2008, 21:52
ты сам правильный пример привёл.

Автор: MAKCim 28.4.2008, 22:27
Цитата(Kakadu @  28.4.2008,  21:43 Найти цитируемый пост)
Какого типа указатель ты опишешь в конструкторе такого листа?

любого  smile 

Автор: source777 28.4.2008, 23:04
Kakadu, это нетипизированный указатель, для случаев когда тип не известен на этапе компиляции, но известен на этапе выполнения, либо для реализации несколько извращенного полиморфизма.

Автор: chipset 29.4.2008, 02:39
void* это для совместимости с legacy и иногда при разработке меж-языково (типа JNA/JNI). Не юзай его.

Автор: math64 29.4.2008, 08:15
Код

class VoidList {
public:
  int size();
protected:
  void addVoid(void* p);
  void* getVoid(int i);
  void* removeVoid(int i);
};

template<class T> List : public VoidList {
  void add(T* p) { addVoid((void*)p); }
  T* get(int i) { return (T*)getVoid(i); }
  void remove(int i) { delete (T*)removeVoid(i); }
};

Добавление класса VoidList экономит размер прогрммы при использовании шаблона List для большого количества классов

Автор: mes 29.4.2008, 08:20
Цитата(chipset @  29.4.2008,  02:39 Найти цитируемый пост)
Не юзай его. 

Поддерживаю. Использовать его надо только в том случае, когда другого выхода нет, 
и программист действительно знает что он делает. 

Автор: Mayk 29.4.2008, 08:33
Цитата(math64 @  29.4.2008,  12:15 Найти цитируемый пост)
Добавление класса VoidList экономит размер прогрммы при использовании шаблона List для большого количества классов

цифры будут?

Автор: Любитель 29.4.2008, 14:26
Экономит, конечно. Но теряется:
1. Скорость
2. Читабельность

Автор: Kakadu 29.4.2008, 18:33
Ну можно подвести небольшой итог: это извращение, которое стоит использовать только в крайнем случае.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)