Глава 6. Базовые типы данных и операции ___ ____________________139
Некоторые рекомендации
Принцип подхода к операциям как к функциям в C++ известен как перегрузка операций (operator overloading), однако пусть вас это пока не беспокоит. Ниже приведены несколько кратких рекомендаций, которые помогут вам писать удобные в обращении и понятные другим операторы:
• Сводите число операций и операндов в составных выражениях к минимуму.
• В сложных выражениях, включающих более одной или двух операций, используйте промежуточные результаты. Компилятор в процессе автоматической оптимизации может ненароком свести на нет ту небольшую экономию, которую вы сумели извлечь, сочинив чрезмерно сложный оператор.
• Уточняйте смысл операций расстановкой скобок.
Замечание
¦Из элементарной математики вы, конечно, знаете, что а + ь * с означает умножить b на с и к результату прибавить а. Но запись а + (b * с) уж точно не оставит места неверному толкованию ваших намерений.
Набираясь опыта в написании выражений, помните о том, что операции — это функции. И еще помните (табл. 6.1), что есть операции (типа new и delete), смысл которых лучше выражается в словах, чем в символах.
Операции new и delete
Операции new и delete предназначены для управления распределением памяти для переменных. Переменные размещаются в двух местах. Первое называется статической памятью (static memory), или стеком (stack), а второе — свободной памятью (free store) или кучей (heap). Оставляя в стороне разницу, стоящую за этими понятиями, отметим, что размещение переменных в куче управляется операциями new и delete. Давайте начнем со сравнения этих двух областей памяти, которые могут предоставлять свое пространство переменным.
Стек
Стек исполняет в программах ряд разноплановых функций. Сейчас мы рассмотрим его в общем и целом. Будем считать программу последовательностью инструкций или операторов; микропроцессор строка за строкой считывает и исполняет каждый оператор, пока не получит сигнал к остановке.
В своей повседневной жизни вы можете делать одно дело, а затем отодвинуть его в сторону, чтобы заняться другим. Закончив с ним, вы возвращае-