» » » Герб Саттер - Стандарты программирования на С++. 101 правило и рекомендация


Авторские права

Герб Саттер - Стандарты программирования на С++. 101 правило и рекомендация

Здесь можно скачать бесплатно "Герб Саттер - Стандарты программирования на С++. 101 правило и рекомендация" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Издательский дом "Вильямс", год 2005. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Герб Саттер - Стандарты программирования на С++. 101 правило и рекомендация
Рейтинг:
Название:
Стандарты программирования на С++. 101 правило и рекомендация
Автор:
Издательство:
Издательский дом "Вильямс"
Год:
2005
ISBN:
5-8459-0859-0
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Стандарты программирования на С++. 101 правило и рекомендация"

Описание и краткое содержание "Стандарты программирования на С++. 101 правило и рекомендация" читать бесплатно онлайн.



Эта книга поможет новичку стать профессионалом, так как в ней представлен сконцентрированный лучший опыт программистов на С++, обобщенный двумя экспертами мирового класса.

Начинающий программист найдет в ней простые и понятные рекомендации для ежедневного использования, подкрепленные примерами их конкретного применения на практике.

Опытные программисты найдут в ней советы и новые рекомендации, которые можно сразу же принять на вооружение. Программисты-профессионалы могут использовать эту книгу как основу для разработки собственных стандартов кодирования, как для себя лично, так и для группы, которой они руководят.

Конечно, книга рассчитана в первую очередь на профессиональных программистов с глубокими знаниями языка, однако она будет полезна любому, кто захочет углубить свои знания в данной области.






Размер имеет значение. При замене указателя на Derived указателем на Base компилятор точно знает, как следует подкорректировать (при необходимости) указатель, поскольку у него есть достаточное количество информации об обоих классах. Однако при выполнении арифметических операций над указателем p на Base компилятор вычисляет p[n] как *(p+n*sizeof(Base)), таким образом полагаясь на то, что объекты, находящиеся в памяти, — это объекты типа Base, а не некоторого производного типа, который может иметь другой размер. Представляете, какая ерунда может получиться при работе с массивом объектов Derived, если вы преобразуете указатель на начало этого массива в указатель типа Base* (что компилятор вполне допускает), а затем примените арифметические операции к этому указателю (что компилятор также пропустит, не моргнув глазом)!

Такие неприятности представляют собой результат взаимодействия двух концепций — заменимости указателей на производный класс указателями на базовый класс, и унаследованной от С арифметикой указателей, которая считает указатели мономорфными и использует при вычислениях только статическую информацию.

Для хранения массива полиморфных объектов вам нужен массив (а еще лучше — контейнер; см. рекомендацию 77) указателей на базовый класс (например, обычных указателей или, что еще лучше, интеллектуальных указателей shared_ptr; см. рекомендацию 79). Тогда каждый указатель массива указывает на полиморфный объект, скорее всего, объект в динамически выделенной памяти. (Если вы хотите обеспечить интерфейс контейнера полиморфных объектов, вам надо инкапсулировать весь массив и предоставить соответствующий полиморфный интерфейс для выполнения итераций.)

Кстати, одна из причин, по которой в интерфейсах следует предпочитать ссылки указателям, заключается в том, чтобы было совершенно очевидно, что речь идет только об одном объекте, а не о массиве объектов.

Ссылки

[C++TR104] • [Dewhurst03] §33, §89 • [Sutter00] §36 • [Meyers96] §3

Список литературы

Примечание: для удобства читателей весь список литературы доступен по адресу http://www.gotw.ca/publications/c++cs/bibliography.htm

Ссылки, выделенные полужирным шрифтом (например, [Abrahams96]), представляют собой гиперссылки в приведенной выше странице.

[Abelson96] Abelson H. and Sussman G. J. Structure and Interpretation of Computer Programs (2nd Edition) (MIT Press, 1996).

[Abrahams96] Abrahams D. Exception Safety in STLport. STLport website, 1996.

[Abrahams01a] Abrahams D. Exception Safety in Generic Components, in Jazayeri M., Loos R., Musser D. (eds.), Generic Programming: International Seminar on Generic Programming, Dagstuhl Castle, Germany, April/May 1998, Selected Papers. Lecture Notes in Computer Science 1766 (Springer, 2001).

[Abrahams01b] Abrahams D. Error and Exception Handling. [Boost] website, 2001.

[Alexandrescu00a] Alexandrescu A. Traits: The else-if-then of Types. С++ Report, 12(4), April 2000.

[Alexandrescu00b] Alexandrescu A. Traits on Steroids. С++ Report, 12(6), June 2000.

[Alexandrescu00c] Alexandrescu A. and Marginean P. Change the Way You Write Exception-Safe Code — Forever. C/C++ Users Journal, 18(12), December 2000.

[Alexandrescu01] Alexandrescu A. Modern С++ Design. Addison-Wesley, 2001.

Перевод: Александреску А. Современное проектирование на С++. Серия С++ In-Depth, т.3. — М.: Издательский дом "Вильямс", 2002.

[Alexandrescu01a] Alexandrescu A. A Policy-Based basic_string Implementation. C/C++ Users Journal, 19(6), June 2001.

[Alexandrescu02a] Alexandrescu A. Multithreading and the С++ Type System. InformIT website, February 2002.

[Alexandrescu02b] Alexandrescu A. "Discriminated Unions (I)," "... (II)," and "... (III)". C/C++ Users Journal, 20(4,6,8), April/June/August 2002.

[Alexandrescu03a] Alexandrescu A. Move Constructors. C/C++ Users Journal, 21(2), February 2003.

[Alexandrescu03b] Alexandrescu A. Assertions. C/C++ Users Journal, 21(4), April 2003.

[Alexandrescu03c] Alexandrescu A. and Marginean P. Enforcements. C/C++ Users Journal, 21(6), June 2003.

[Alexandrescu03d] Alexandrescu A. and Held D. Smart Pointers Reloaded. C/C++ Users Journal, 21(10), October 2003.

[Alexandrescu04] Alexandrescu A. Lock-Free Data Structures. C/C++ Users Journal, 22(10), October 2004.

[Allison98] Allison С. С & С++ Code Capsules. Prentice Hall, 1998.

[Austern99] Austern M. H. Generic Programming and the STL. Addison-Wesley, 1999.

[Barton94] Barton J. and Nackman L. Scientific and Engineering С++. Addison-Wesley, 1994.

[Bentley00] Bentley J. Programming Pearls (2nd Edition). Addison-Wesley, 2000.

Перевод: Бентли Дж. Жемчужины программирования. Второе издание. — СПб.: Питер, 2002.

[BetterSCM] Web-узел Better SCM Initiative.

[Boost] С++ Boost.

[BoostLRG] Boost Library Requirements and Guidelines. (Web-узел Boost).

[Brooks95] Brooks F. The Mythical Man-Month. Addison-Wesley, 1975; reprinted with corrections in 1995.

[Butenhof97] Butenhof D. Programming with POSIX Threads. Addison-Wesley, 1997.

[Cargill92] Cargill T. С++ Programming Style. Addison-Wesley, 1992.

[C90] ISO/IEC 9899:1990(E), Programming Languages — C (ISO C90 and ANSI C89 Standard).

[C99] ISO/IEC 9899:1999(E), Programming Languages — C (revised ISO and ANSI C99 Standard).

[C++98] ISO/IEC 14882:1998(E), Programming Languages — С++ (ISO and ANSI С++ Standard).

[C++03] ISO/IEC 14882:2003(E), Programming Languages — С++ (updated ISO and ANSI С++ Standard including the contents of [C++98] plus errata corrections).

[C++TR104] ISO/IEC JTC1/SC22/WG21/N1711. (Draft) Technical Report on Standard Library Extensions (ISO С++ committee working document, November 2004). Близкий к окончанию черновик с расширениями стандартной библиотеки С++, включая shared_ptr.

[Cline99] Cline М., Lomow G., and Girou M. С++ FAQs (2nd Edition). Addison-Wesley, 1999.

[Constantine95] Constantine L. Constantine on Peopleware. Yourdon Press, 1995.

[Coplien92] Coplien J. Advanced С++ Programming Styles and Idioms. Addison-Wesley, 1992.

[Cormen01] Cormen T., Leiserson C., Rivest R., Stein C. Introduction to Algorithms (2nd Edition). MIT Press, 2001.

Перевод: Кормен T., Лейзерсон Ч., Ривест Р., Стейн К. Введение в алгоритмы. 2-е изд. — М.: Издательский дом "Вильямс" (в печати)

[CVS] Web-узел CVS.

[Cowan01] Cowan С., Barringer М., Beattie S., and Kroah-Hartman G. FormatGuard: Automatic Protection From printf Format String Vulnerabilities. Proceedings of the 2001 USENIX Security Symposium, August 2001, Washington, D.C.

[Dewhurst03] Dewhurst S. С++ Gotchas. Addison-Wesley, 2003.

[Dinkumware-Safe] Dinkumware Unabridged Library documentation (Web-узел Dinkumware).

[Ellis90] Ellis M. and Stroustrup B. The Annotated С++ Reference Manual. Addison-Wesley, 1990.

Перевод: Эллис M., Страуструп Б. Справочное руководство по языку программирования С++ с комментариями. — М.: Мир, 1992.

[Gamma95] Gamma E., Helm R., Johnson R., and Vlissides J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

Перевод: Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб.: Питер, 2001.

[GnuMake] Gnu make (Web-узел Gnu).

[GotW] Sutter H. Guru of the Week column.

[Henney00] Henney K. С++ Patterns: Executing Around Sequences (EuroPLoP 2000 proceedings).

[Henney01] Henney K. С++ Patterns: Reference Accounting (EuroPLoP 2001 proceedings).

[Henney02a] Henney K. Stringing Things Along. Application Development Advisor, July-August 2002.

[Henney02b] Henney K. The Next Best String. Application Development Advisor, October 2002.

[Henricson97] Henricson M. and Nyquist E. Industrial Strength С++. Prentice Hall, 1997.

[Horstmann95] Horstmann C. S. Safe STL., 1995.

[Josuttis99] Josuttis N. The С++ Standard Library. Addison-Wesley, 1999.

Перевод: Джосьютис Н. С++. Стандартная библиотека. — СПб.: Питер (в печати).

[Keffer95] Keffer T. Rogue Wave С++ Design, Implementation, and Style Guide. Rogue Wave Software, 1995.

[Kernighan99] Kernighan B. and Pike R. The Practice of Programming. Addison-Wesley, 1999.

[Knuth89] Knuth D. The Errors of TeX. Software — Practice & Experience, 19(7), July 1989.

[Knuth97a] Knuth D. The Art of Computer Programming, Volume I: Fundamental Algorithms, 3rd Edition. Addison-Wesley, 1997.

Перевод: Кнут Д. Искусство программирования, том 1. Основные алгоритмы, 3-е изд. — М.: Издательский дом "Вильямс", 2000.

[Knuth97b] Knuth D. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd Edition. Addison-Wesley, 1997.

Перевод: Кнут Д. Искусство программирования, том 2. Получисленные алгоритмы, 3-е изд. — М.: Издательский дом "Вильямс", 2000.

[Knuth98] Knuth D. The Art of Computer Programming, Volume 3: Sorting and Searching, 2nd Edition. Addison-Wesley, 1998.

Перевод: Кнут Д. Искусство программирования, том 3. Сортировка и поиск, 2-е изд. — М.: Издательский дом "Вильямс", 2000.

[Koenig97] Koenig A. and Moo В. Ruminations on С++. Addison-Wesley, 1997.

[Lakos96] Lakos J. Large-Scale С++ Software Design. Addison-Wesley, 1996.

[Liskov88] Liskov B. Data Abstraction and Hierarchy. SIGPLAN Notices, 23(5), May 1988.

[Martin96a] Martin R. C. The Dependency Inversion Principle. С++ Report, 8(5), May 1996.

[Martin96b] Martin R. C. Granularity. С++ Report, 8(9), October 1996.

[Martin96c] Martin R. C. The Open-Closed Principle. С++ Report, 8(1), January 1996.

[Martin98] Martin R. C., Riehle D., Buschmann F. (eds.). Pattern Languages of Program Design 3. Addison-Wesley, 1998.

[Martin00] Martin R. C. Abstract Classes and Pure Virtual Functions in Martin R. C. (ed.), More С++ Gems. Cambridge University Press, 2000.

[McConnell93] McConnell S. Code Complete. Microsoft Press, 1993.

[Metrowerks] Metrowerks.

[Meyer00] Meyer B. Object-Oriented Software Construction, 2nd Edition. Prentice Hall, 2000.

[Meyers96] Meyers S. More Effective С++. Addison-Wesley, 1996.

Перевод: Мейерс С. Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов. — М.: ДМК Пресс, 2000.

[Meyers97] Meyers S. Effective С++, 2nd Edition. Addison-Wesley, 1997.

Перевод: Мейерс С. Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов. — М.: ДМК Пресс, 2000.


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Стандарты программирования на С++. 101 правило и рекомендация"

Книги похожие на "Стандарты программирования на С++. 101 правило и рекомендация" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Герб Саттер

Герб Саттер - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Герб Саттер - Стандарты программирования на С++. 101 правило и рекомендация"

Отзывы читателей о книге "Стандарты программирования на С++. 101 правило и рекомендация", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.