2016-03-09 6 views
-5

Я видел такой ответ:Какой стандарт C++ лучше COM?

COM - это собственная техника. Он удовлетворяет некоторые особые потребности, но нарушает множество хороших технических принципов. Например, твердый. Стандарт имеет лучшие способы, чем использование COM. - mkaes

Очень интересно знать, что это за «лучшие способы»?

Мы используем в нашем проекте базовый класс IUnknown, но не COM-технологию. IUnknown позволяет нам:

  1. имеет хороший указанный интерфейс абстрактных классов;
  2. использовать его add()/release() в качестве основы для интрузивных умных ptrs;
  3. механизм использования QueryInterface() должен быть более эффективным, чем dynamic_cast;

Хорошо, существует boost :: intrusive_ptr, но пока это не стандарт. И даже если бы он был там, это будет отдельный класс для решения задачи интрузивного умного ptr. Если предположить, что там, да я мог бы сделать что-то, как

interface ITable : intrusive_ptr {} 
interface IField : intrusive_ptr {} 

Но как насчет QueryInterface механизма()?

P.S. Этот вопрос НЕ о COM вообще.

+0

Интересный сайт ... модераторы стереть здесь 30 комментариев, где хотя бы один модератор сказал глупость о COM и ActiveX ... Итак, мы модерируемся людьми, которые очень активны (студенты?), Но не являются глубокими экспертами ? Отлично :) –

ответ

2

Стандарт использует: состав, а не наследование в большинстве случаев (очень мало наследования в стандартной библиотеке). Предпочитает типовое программирование на основе шаблонов, а не полиморфизм времени выполнения. Предпочитает типы значений, а не указания указателей неизвестного конечного типа для всего, везде. Все, что вы должны делать на C++, а не рассматривать его как Java.

+1

Хотя я полностью ненавижу идею «состав, а не наследование» (просто посмотрите на стандартную реализацию - все унаследовано от чего-то!), Остальные кольца очень верны. – SergeyA

+0

Хорошо, да, я знаю, что STL является библиотекой шаблонов из ее родившихся ... Ребята, вы серьезно относитесь к использованию наследования, это стиль Java? Сколько вам лет, ребята? Я помню, что в 80-83 годах, когда C++ пришли к нам в руки, у нас было только наследование. Шаблоны были добавлены позже на C++. Я понимаю, что вы тоже можете ненавидеть Java, но почему вы ставили это как аргумент? :) –

+1

Когда «указатели» - стали «Java-стилями» ?? –

Смежные вопросы