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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Странное поведение http://www.cyberforum.ru/cpp-beginners/thread601874.html
Здравствуйте еще раз :) Теперь возникла другая непонятка. Есть класс StringParser, объекты которого умеют разбивать строку на подстроки, разделенные запятыми. Всякий раз, когда вы вызываете метод .getNextPart(), он возвращает вам следующую подстроку. Описывается класс StringParser в файле StringParser.h: using namespace std; class StringParser { private: char *str, *seperators; int...
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 = new char;
C++ Ошибка при запуске программы (undefined reference to...)
Здравствуйте, пишу лабу по С++ и столкнулся с ошибкой при запуске данного кода, ошибка 248|undefined reference to `Podrazdelenie::scan()' #include <stdio.h> #include <tchar.h> #include "string.h" class Podrazdelenie; class Tirg_avtomat { protected: static int kolvo; static int nomer;
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 записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 100. В единственную строку выходного файла OUTPUT.TXT нужно вывести искомую длину цепочки нулей. #include <stdio.h> подробнее

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

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

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

Пример:

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

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

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