system( "PAUSE" ) ; return 0 ;
}

Определение класса содержит только прототип функции deposit( ) , а её тело определено в другом месте. Такое объявление аналогично объявлению любого другого прототипа.
Обратите внимание, что при определении функции-члена deposit( ) потребовалось указание её полного имени
float Savings::deposit( float amount )
; сокращённого имени при определении вне класса недостаточно.
►Перегрузка функций-членов...165
Функции-члены могут перегружаться так же, как и обычные функции ( обратитесь к главе 6, "Создание функций", если забыли, что это значит ). Как вы помните, имя класса является частью полного имени, и все приведённые ниже функции вполне корректны.
class Student
{
public :
/* grade — возвращает текущую среднюю оценку */
float grade( ) ;
/* grade — устанавливает новое значение оценки и возвращает предыдущее */
float grade( float newGPA )
/* ...прочие члены-данные... */
} ;
class Slope
{
public :
/* grade — возвращает снижение оценки */
float grade( ) ;
/* ...прочие члены-данные... */
} ;
/* grade — возвращает символьный эквивалент оценки */
char grade( float value ) ;
int main( int argcs , char* pArgs[ ] )
{
Student s ;
s.grade( 3.5 ) ; /* Student::grade( float ) */
float v = s.grade( ) ; /* Student::grade( ) */
char с = grade( v ) ; /* ::grade( float ) */
Slope o ;
float m = о.grade( ) ; /* Slope::grade( ) */
return 0 ;
}
_________________
165 стр. Глава 13. Работа с классами
Полные имена вызываемых из main( ) функций указаны в комментариях.
Когда происходит вызов перегруженной функции, составляющими её полного имени считаются не только аргументы функции, но и тип объекта, который вызывает функцию ( если она вызывается объектом ). Такой подход позволяет устранить неоднозначность при вызове функции.
В приведённом примере первые два вызова обращаются к функциям-членам Student::grade( float ) и Student::grade( ) соответственно. Эти функции отличаются списками аргументов. Вызов функции s.grade( ) обращается к Student::grade( ) , поскольку тип объекта s — Student .
Третья вызываемая функция в данном примере — функция ::grade( float ) , не имеющая вызывающего объекта. Последний вызов осуществляется объектом типа Slope , и соответственно вызывается функция-член Slope::grade( float ) .
_________________
166 стр. Часть 3. Введение в классы
Глава 14. УКАЗАТЕЛИ НА ОБЪЕКТЫ...167
ОГЛАВЛЕНИЕ
В этой главе...
►Определение массивов и указателей 167
►Объявление массивов объектов 168
►Объявление указателей на объекты 169
►Передача объектов функциям 171
►Зачем использовать указатели и ссылки 174
►Возврат к куче 175
►Сравнение указателей и ссылок 175
►Почему ссылки не используются вместо указателей 175
►Использование связанных списков 176
►Списки в стандартной библиотеке 180
Программисты на С++ всё время создают массивы чего-либо. Формируются массивы целочисленных значений, массивы действительных значений; так почему бы не создать массив студентов? Студенты всё время находятся в списках ( причём гораздо чаще, чем им хотелось бы ). Концепция объектов Student , стройными рядами ожидающих своей очереди, слишком привлекательна, чтобы можно было пройти мимо неё.
►Определение массивов и указателей...167
Массив является последовательностью идентичных объектов и очень похож на улицу с одинаковыми домами. Каждый элемент массива имеет индекс, который соответствует порядковому номеру элемента от начала массива. При этом первый элемент имеет нулевое смещение от начала массива, а значит, имеет индекс 0.
Массивы в С++ объявляются с помощью квадратных скобок, в которых указывается количество элементов в массиве.
int array[ 10 ] ; /* Объявление массива из 10 элементов */
К отдельному элементу массива можно обратиться, подсчитав смещение от начала массива:
array[ 0 ] = 10 ; /* Присвоить 10 первому элементу */
array[ 9 ] = 20 ; /* Присвоить 20 последнему элементу */
В этом фрагменте первому элементу массива ( элементу под номером 0 ) присваивается значение 10 , а последнему — 20.

Читать дальше