Идиомы и стили С++ (Махмутов) - страница 2

Так вот, что я предлагаю: Я тут сижу и прорабатываю пачку книжек на эту тему. По мере продирания через них буду шкрябать статейки, и размещать их на FS. Надеюсь, авторы не обидятся. Напишу пяток-десяток, если будут отклики - продолжу. Если нет - значит не надо.

Насчет чего статейки будут - я выше перечислил. Еще будут объекты, поддерживающие транзакции, блокировки, очереди запросов на транзакции, имитация (в том числе и безопасная) массивов, инкапсуляция небезопасных типов в безопасные шаблоны, итераторы, создающие упрощенные копии сканируемого массива, управление памятью с оптимизацией и сборкой мусора, обработка исключений, виртуальные конструкторы(!), двойная и N-мерная диспетчеризация. Во всяком случае я это планирую (Самому страшно от того, что я перечислил; Но может силов мущинских моих не хватит, тогда не знаю…) Все это по силам практически любому, кто досюда вообще дочитал, и не помер со скуки. А пользы, как говорил Коровьев, он же Фагот, "от этого пения целый вагон". Вот например, самое простое - объект-указатель при отладке и на ранней стадии реализации проекта может управлять безопасным и низкопроизводительным массивом, а в релиз версии - самым обычным. При этом вы пользуетесь объектом-указателем как самим массивом.

Ну и ладно. Закончим со вступлением.

На всякий случай укажу свои основные источники, у которых я беру поносить идеи и мысли на время:

1. Jeff Alger. C++ for real progammers. (Джефф Элджер. С++).

2. James Coplien. Advanced C++ Styles and Idioms.

3. Мейерс, Скотт. Эффективное использование С++.

4. Страуструп, Бъярни. Язык программирования С++. Третье издание.

5. Буч, Гради. Объектно-ориентированное проектирование с примерами на С++. Второе издание.

6. Бабе, Бруно. Все о С++.

7. Microsoft corp. Официальное пособие по разработке приложений на VC++6.0

Вообще говоря, в основном все буду брать у Элджера. Проще, и интереснее. Мы же не умереть собираемся.

Ну и все. Начнем, пожалуй.

Шаг 2 - Умные указатели.

Сначала договоримся о терминах. Перегрузка функций (overloading) - многократное определение функции с разным набором аргументов (сигнатурой). В сигнатуру включается модификатор const, но не включается возвращаемое значение. Перегрузка операторов (overloading) - то же самое (операторы это собственно функции, только имя у них предопределенное), ПЛЮС само определение такого оператора. Если вы определили оператор для какого-то класса, это уже считается перегрузкой. Переопределение функций (overriding) - определение функций в субклассах с тем же именем. Правила переопределения функций достаточно сложны, и я не хотел бы грузить вас ими. Скажу только, что в