05.09.2016 Views

Стефан Р. - С++ Для чайников

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

добавить пройденный курс к записи<br />

float addCourse(int hours, float grade)<br />

// Добавляет информацию о пройденном курсе к<br />

// полям класса Student<br />

float Student::addCourse(int hours, float grade)<br />

float weightedGPA;<br />

weightedGPA = semesterHours * gpa;<br />

// добавить новый курс<br />

semesterHours += hours;<br />

weightedGPA += grade * hours;<br />

gpa = weightedGPA / semesterHours;<br />

return gpa;<br />

Теперь объявление класса содержит только прототип функции addCourse (). При<br />

этом само тело функции находится в другом месте.<br />

Объявление прототипа функции-члена по структуре не отличается от объявления<br />

прототипа любой другой функции, и, подобно всем объявлениям прототипов,<br />

обязательно.<br />

В этом примере класс Student и функция Student:: addCourse () определены<br />

в одном файле. Так можно делать, но такое расположение не очень распространено.<br />

Обычно класс Student определяется во включаемом файле, например student.h,<br />

а тело функции может находиться в отдельном исходном файле, например<br />

Student.срр.<br />

Файл Student, срр должен быть включен в состав вашего проекта вместе<br />

с другими файлами. Student. срр будет скомпилирован в отдельный<br />

.obj-файл, который затем будет скомпонован с другими файлами в вашу<br />

программу на этапе сборки. Более детальное описание этого процесса<br />

можно найти в главе 6, "Создание функций".<br />

фцшщий-чиенов<br />

Функции-члены могут перегружаться так же, как и обычные функции (обратитесь<br />

к главе 6, "Создание функций", если забыли, что это значит). Как вы помните, имя<br />

класса является частью полного имени, и все приведенные ниже функции вполне<br />

корректны.<br />

class Student<br />

{<br />

public:<br />

//grade — возвращает текущую среднюю оценку<br />

float grade();<br />

//grade — устанавливает новое значение<br />

//оценки и возвращает предыдущее<br />

float grade(float newGPA);<br />

II... прочие члены-данные ...<br />

};<br />

class Slope<br />

{<br />

public:<br />

//grade — возвращает снижение оценки<br />

156 Часть ///. "Классическое" программирование

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!