Практикум для изучения дисциплины «Основы программирования»



Pdf көрінісі
бет77/81
Дата08.07.2020
өлшемі1,55 Mb.
#74978
түріПрактикум
1   ...   73   74   75   76   77   78   79   80   81
Байланысты:
А.А. Тюгашев

ЗАМЕЧАНИЕ 
Членами класса могут быть и константы. 


149 
 
Приведем пример определения класса 
человек (chelovek — жаль, но в 
большинстве  реализаций  С++  использование кириллических  символов не 
допускается): 
сlass chelovek 

  public: 
    int godRogd; // 
год рождения 
    char Fam[50]; // 
фамилия  
    char Ima[20]; // 
имя 
    char Otc
[50]; // отчество 
 
    
// Вывод информации о человеке на экран 
    void pecat_kto_takoi() 
    { 
        
cout << Fam << Ima << Otc << godRogd << "года рождения"; 
    }    
    
}; 
Разберем  пример  более  подробно.  У  класса  объявляется  набор 
общедоступных  членов —  об  этом  говорит  модификатор  доступа 
public
.  Это  переменные-члены  класса,  описывающие  фамилию,  имя  и 
отчество  с  помощью  строк  и  год  рождения —  с  использованием  целого 
числа, а также одна функция-член pecat_kto_takoi(), служащая для 
вывода  информации  о  человеке  на  экран  (void  в  заголовке  функции 
означает, что она не возвращает никакого значения, return со значением 
в таких функциях не используется). 
В  приведенном  примере  функция-член  определена  прямо  в  теле  класса. 
Это  не  подходит  для  длинных  сложных  функций —  для  них 
предусматривается возможность задания при определении класса лишь ее 
объявления  и  реализации  в  другом  месте  текста  программы.  При  этом 
определение функции должно предваряться именем класса, после которого 
идет двойное двоеточие, как в примере: 
// определение функции-члена вне класса 
class primer 

   
int delai_nechto(); // функция-член, лишь объявление — заголовок 
   
float x; // переменная-член класса 
}; 
 
// реализация функции-члена класса primer 
int primer:: delai_nechto() 


150 
 

   

После  объявления  класса  мы  получаем  право  создавать  в  программе  на 
С++  объекты  данного  класса,  причем  полностью  равноправные  с 
объектами встроенных типов: 
chelovek Liza, Andrei, Nasta; // три объекта класса человек 
и  обращаться  к их членам, отделяя имя  объекта и  имя  члена  с помощью 
точки: 
Liza.pecat_kto_takoi(); 
Andrei.godRogd=1971; 
Среди  функций-членов  класса  имеются  две  особые  разновидности — 
конструктор  и  деструктор.  Функция-конструктор  вызывается  каждый 
раз, когда нужно создать объект данного класса, а деструктор — при его 
уничтожении.  Имя  конструктора  в  языке  программирования  С++ 
совпадает  с  именем  класса,  а  имя  деструктора  образуется  добавлением  в 
начало наименования класса символа ~. 
Пример  конструктора  для  класса 
человек  (обратите  внимание  на  еще 
одну  особенность —  у  функции-конструктора  не  указывается  тип 
возвращаемого значения): 
// конструктор класса человек 
chelovek::chelovek(char I[],char F[],char O[]) 

  strcpy(Ima,I); 
  strcpy(Fam,F); 
  strcpy(Otc,O); 

После  задания  данного  конструктора  допустимым  становится  создание 
нового объекта класса 
человек следующим образом: 
chelovek Dima("Дмитрий","Геннадьевич","Романов",1971); 
Класс может иметь несколько конструкторов, различающихся сигнатурой 
(количеством  и  типом  аргументов).  Так,  можно  задать  конструктор, 
который  будет  инициализировать  фамилию,  имя  и  отчество  пустыми 
строками: 
// другой конструктор для класса человек 
chelovek::chelovek() 

  strcpy(Ima,""); 
  strcpy(Fam,""); 


151 
 
  strcpy(Otc,""); 

Наличие  нескольких  конструкторов —  частный  случай  так  называемой 
перегрузки функций в объектно-ориентированных языках, тесно связанной 
с полиморфизмом. Все задаваемые программистом конструкторы должны 
быть  объявлены  при  определении  класса.  В  нашем  случае  это  выглядит 
так: 
chelovek::chelovek(char I[],char F[],char O[],int G); 
chelovek::chelovek(); 
Если программист при описании класса не создает ни одного конструктора 
явным  образом,  система  создает  один,  не  имеющий  аргументов  и 
называемый конструктором по умолчанию
Помимо  создания  объекта  путем  объявления  переменной  данного  класса 
возможно  объявление  переменной-указателя  на  объект  данного  класса. В 
этом случае используется звездочка: 
chelovek *Natasha; 
Следует помнить, что при объявлении указателя объект на самом деле не 
создается и впоследствии нужно выполнить специальное действие: 
Natasha=new chelovek; 
После  этого  можно  обращаться  к  членам  класса,  используя  не  точку,  а 
стрелку ->: 
Natasha->godRogd=2003; 
Natasha->pecat_kto_takoi(); 


Достарыңызбен бөлісу:
1   ...   73   74   75   76   77   78   79   80   81




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет