Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

В чем преимущество использования Pimpl? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Странное поведение http://www.cyberforum.ru/cpp-beginners/thread601874.html
Здравствуйте еще раз :) Теперь возникла другая непонятка. Есть класс StringParser, объекты которого умеют разбивать строку на подстроки, разделенные запятыми. Всякий раз, когда вы вызываете метод...
C++ Инициализация элементов массива в конструкторе Доброго времени суток! Подскажите пожалуйста можно ли инициализировать элементы массива при помощи списка инициализации в конструкторе класса. Если можно то какой синтаксис, а если нет то почему? http://www.cyberforum.ru/cpp-beginners/thread601847.html
C++ Странные ошибки
Здравствуйте! У меня есть такой код: class StringParser { private: char* str; char* seperators; int position; public: StringParser (char* newStr) { str = newStr; seperators =...
C++ Ошибка при запуске программы (undefined reference to...)
Здравствуйте, пишу лабу по С++ и столкнулся с ошибкой при запуске данного кода, ошибка 248|undefined reference to `Podrazdelenie::scan()' #include <stdio.h> #include <tchar.h> #include "string.h"...
C++ Сколько различных натуральных чисел можно составить из цифр 0, 1, 2, 3, 4, 5, http://www.cyberforum.ru/cpp-beginners/thread601837.html
Сколько различных натуральных чисел можно составить из цифр 0, 1, 2, 3, 4, 5, если каждая цифра входит не более одного раза
C++ Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц Здравствуйте, не могу понять в чём может быть ошибка :) Решаю олимпиадную задачу. Но система находит в тесте 5 не верный ответ) В единственной строке входного файла INPUT.TXT записана... подробнее

Показать сообщение отдельно
Bers
Заблокирован
10.06.2012, 14:29
Цитата Сообщение от grizlik78 Посмотреть сообщение
Платой является некоторое (в большинстве случаев незначительное или даже нулевое) снижение производительности за счёт дополнительного уровня (что-то слова подходящего не подберу) косвенности что ли...
Это копейки.

Пимпл отлично себя зарекомендовал, являясь мембером классов. Но его нельзя использовать при построении архитектуры. Ты не можешь создать предварительное объявление класса, а потом от него унаследоваться.

Другой недостаток - сложности в сопровождении и поддержании интерфейса оберегаемого класса.

Пример:

Есть класс CWork
Этот класс унаследован от целой пачки чевотов, и несет на борту кучу всякого функционала.
Теперь, нужно его начинку упрятать при помощи pimpl.
Вызовы CWork делегируются pimpl.

Но что делать с предками CWork? Они должны быть известны на этапе компиляции. И ничем не закрыты. Смысл тогда прятать одного CWork, если нельзя спрятать всех его предков?

К тому же, если у кого нибудь из предков изменится функционал, он автоматически изменится у CWork, а вот pimpl об это уже не узнает... эпик-фейл.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru