КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Листинг 14.2. Пример реализации класса// Воок.срр - реализация класса СВооk #include "Book.h" #include <string> // установить автора void СВоок :: setAuthor ( const char* author ) { strncpy_s < m_author, 50, author, 49 ) ; if ( strlen ( author ) > 49 ) m_author [ 49 ] = ‘\0' ; } // установить название void СВоок :: setTitle ( const char* title ) { delete [ ] m_pTitle ; m_pTitle = new char [strlen ( title )+ 1] ; strcpy_s ( m_pTitle, strlen ( title ) + 1, title ) ; } // установить год издания void СВоок :: setYear ( const int year ) { m_уеаr = year ; } // вернуть автора char* СВоок :: getAuthor ( void ) { Return m_author ; } // вернуть название char* СВоок :: getTitle ( void ) { Return m_pTitle ; } // вернуть год издания int СВоок :: getYear ( void ) { Return m_year ; }
Методи, показані в лістингу 14.2, не потребують особливих коментарів. Слід звернути увагу на визначення методів для встановлення значення автора і значення назви книги. У методі setAuthor () в змінну m_author можна скопіювати тільки 49 байтів з параметра author. У разі перевищення цього значення залишок рядка author втрачається, і в останній байт масиву m_author записується нульовий байт. У методі setTitle () дане m_pTitle є покажчиком, тому спочатку необхідно звільнити пам'ять, займану існуючим значенням на звання книги, виділити достатній для розміщення нової назви книги блок пам'яті і тільки потім копіювати значення параметра title. При виділенні пам'яті до довжини рядка title додається 1 байт для запису нульового байта.
Оголошення об'єкта класу
Оголошення об'єкта класу (object definition) не варто плутати з оголошенням класу. Важливо розуміти, що клас не містить ніяких значень даних, а лише описує загальну структуру і поведінку об'єктів, будучи як би трафаретом для їх створення. Опис об'єкту задає його тип (ім'я класу) і, можливо, необхідні для ініціалізації членів-даних значення. При оголошенні об'єкта компілятор отримує вказівку на створення змінної класу на підставі заданого типу. Коли об'єкт оголошується, то згідно з описом класу для об'єкта відбувається виділення оперативної пам'яті, а також при вказівці значень даних здійснюється ініціалізація членів-даних зазначеними значеннями. Всю цю роботу робить спеціальний метод класу, званий конструктором. Конструктори розглядаються в книзі в окремому розділі з однойменною назвою. Основними форматами оголошення об'єкта класу є наступні: Имя_класса имя_объекта ; Имя_класса имя_объекта ( список параметров ) ; имя_класса имя_объекта ( имя_объекта_копирования ) ; Листинг 14.3. Пример объявлений объектов класса CBook book, аВооk [ 100 ] ; СВоок obj ( "Carrol L.", "Alice in Wonderland", 2002 ) ;
|