LibKing » Книги » comp-programming » Albert Makhmutov - Идиомы и стили С++

Albert Makhmutov - Идиомы и стили С++

Тут можно читать онлайн Albert Makhmutov - Идиомы и стили С++ - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
libking
  • Название:
    Идиомы и стили С++
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.12/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

Albert Makhmutov - Идиомы и стили С++ краткое содержание

Идиомы и стили С++ - описание и краткое содержание, автор Albert Makhmutov, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Идиомы и стили С++ - читать онлайн бесплатно полную версию (весь текст целиком)

Идиомы и стили С++ - читать книгу онлайн бесплатно, автор Albert Makhmutov
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Albert Makhmutov

Идиомы и стили С++

Шаг 1 - Введение. Зачем все это надо и что это такое.

Чтобы сразу пояснить свой план, сообщу - здесь и далее я собираюсь вместе с Вами разобрать следующие темы:

1. Объекты-указатели на другие объекты.

2. Объекты-интерфейсы к другим объектам.

3. Использование шаблонов как средства безопасности.

4. Массивы данных, итераторы и курсоры.

5. Нестандартное управление памятью.

6. Разное.

Давайте посмотрим, что мы имеем на этот день. Если Вы добрались сюда, и начали читать, значит Вы облазили FirstStepsпо всем разделам, вероятно, списали часть разделов себе на винчестер, и держите на столе пачку книг по программированию. Предполагаю так же, что Вы имеете за своей спиной 2-4 работающих проекта на FoxPro, Delphiили C/C++. То есть опыт имеете, но супермастером себя ПОКА не считаете. Но почему, собственно? Что нам мешает? Разве в Lotusили Microsoftработают одни гении (звучит прикольно, кстати)? Почему какие-то ребята вполне способны написать Windowsили PhotoShop, или там DeltaForce, а нам то что мешает? Вы только подумайте - С++изобрел один Бьярн Страуструп. Один! И перевернул мир. А STLпридумал Алексей Степанов. Один. Сейчас в Хьюлет-Паккарде сидит. Тоже мир перевернул. (Если не верите, сравните второе и третье издание Страуструпа, "Язык программирования С++").

Похоже где-то есть неслабый пробел. Ну, может Вас, в институте учили разным штучкам и фенечкам в программировании, а меня, помнится, учили, что: "Компьютер состоит из монитора, системного блока и клавиатуры; при выходе из строя системного блока необходимо заменить системный блок". И если про бинарные деревья и хэш-таблицы можно почитать у Д. Кнута, то есть огромная область, которой похоже не учат до сих пор. Похоже на то, как если Вы выучили иностранный язык, и можете на нем читать-писать, а вот как разговорная речь так вроде все слова понятны, а вместе не ложатся. (Христос за это апостолов корил: "Какое слово вам непонятно!") Почему? Потому, что слова в разговорной речи, а равно и в программировании, складываясь, могут приобретать иной смысл и становиться фразеологизмами, или идиомами. И нам этот смысл надо постигать посредством чтения умных книжек. А что там? А там посмотришь на прилавки - выбор каков - "С++ для тупых", "С++ для Бивиса и Батт-хеда" да плюс справочники по функциям и алгоритмам. Но того, о чем я говорю, практически нет.

Итого получается, что не хватает нам того, чтобы секреты мастерства нам кто-то передавал. Секретов-то много, своим умом не дойдешь. Это в древности хорошо было - помирает старый мастер, перед смертью в двух словах раз-два, сказал пару слов и глазки закатил. Ну вы знаете - "Как ты делаешь такой вкусный чай" - "Ложите побольше заварки!". С программированием такого не бывает. Надо секрет загодя узнавать, мастера душить. Найти бы его только. Но делать то что-то надо!

Так вот, что я предлагаю: Я тут сижу и прорабатываю пачку книжек на эту тему. По мере продирания через них буду шкрябать статейки, и размещать их на 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) - определение функций в субклассах с тем же именем. Правила переопределения функций достаточно сложны, и я не хотел бы грузить вас ими. Скажу только, что в Object Pascalони не в пример яснее, и компилятор укажет вам, что вы тормоз, если тормознете. А в Плюсах компилятор просто скроет функции, которые вы переопределите неправильно. Ну мы ему отомстим.

В C++мы можем перегрузить почти все операторы, за исключением нескольких. Во всяком случае, оператор -›перегружается, и это имеет значение крайне важное. Кстати, он называется селектором ( member selector). Итак, попробуем:

#include ‹mem.h›

class Cthat {

public:

void doIt(void){return;};

};

class CPthat {

private:

Cthat* aThat;

public:

CPthat(Cthat* _that=NULL):aThat(_that){}

~CPthat() { if (aThat) delete aThat; }

operator Cthat* () { return aThat;} // Оператор преобразования типа

CThat* operator-›() { return aThat; }; // Оператор селектора -›

CPthat operator+(ptrdiff_t _offset) { return CPthat(aThat+_offset); }

// ^^^^^^^^^

};

int main () {

Cthat* aThat = new Cthat;

aThat-›doSomething();

CPthat pthat(new Cthat);

pthat-›doIt(); // Вариант обращения через -›

((Cthat*)pthat)-›doIt (); //Вариант обращения через Cthat*

delete aThat;

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Albert Makhmutov читать все книги автора по порядку

Albert Makhmutov - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Идиомы и стили С++ отзывы


Отзывы читателей о книге Идиомы и стили С++, автор: Albert Makhmutov. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img