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.

В C++ мы говорим, что класс student наследует класс Person. Кроме того, мы<br />

говорим, что Person является базовым классом для класса student. Наконец, мы<br />

говорим, что student ЯВЛЯЕТСЯ Person (использование прописных букв — общепринятый<br />

метод отражения уникального типа связи; не я это придумал). Эта<br />

терминология используется в C++ и других объектно-ориентированных языках<br />

программирования.<br />

Заметьте, что хотя student и ЯВЛЯЕТСЯ Person, обратное не верно. Person не<br />

ЯВЛЯЕТСЯ Student (такое выражение следует трактовать в общем смысле, поскольку<br />

конкретный человек, конечно же, может оказаться студентом). Существует много людей,<br />

которые являются членами класса Person и не являются членами класса student.<br />

Кроме того, класс student имеет средний балл, a Person его не имеет.<br />

Свойство наследования транзитивно. Например, если я определю новый класс<br />

GraduateStudent как подкласс класса student, то он тоже будет наследником<br />

Person. Это значит, что будет выполняться следующее: если GraduateStudent<br />

ЯВЛЯЕТСЯ Student и Student ЯВЛЯЕТСЯ Person, то GraduateStudent<br />

ЯВЛЯЕТСЯ Person.<br />

ftcuc<br />

класс<br />

Здесь приведен пример уже рассмотренного класса GraduateStudent, который<br />

дополнен несколькими членами.<br />

#include <br />

class Acvisor<br />

class Student<br />

{<br />

public:<br />

Student {char *pNarr.e = "no name")<br />

{<br />

strncpy(name, pName, sizeof(name));<br />

average = 0.0;<br />

semesterHours = 0;<br />

voidaddCourse(inthours,floatgrade)<br />

{ average<br />

semesterHours = (semesterHours<br />

+=hours; *average +grade};<br />

}<br />

average =average /semesterHours;<br />

inhours(<br />

floatgpa{ )<br />

{returnseraesterHours;}<br />

{returnaverage;i<br />

protected:<br />

charname[40];<br />

intsemesterHours;<br />

);<br />

floataverage;<br />

classGraduateStudent :publicStudent<br />

Глава 21. Наследование классов 227

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

Saved successfully!

Ooh no, something went wrong!