Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Листинг 14.2. Пример реализации класса




Читайте также:
  1. C2 Покажите на трех примерах наличие многопартийной политической системы в современной России.
  2. C2 Раскройте на трех примерах научный вывод о том, что социальные условия влияют на характер и форму удовлетворения первичных (биологических, витальных) потребностей.
  3. F48.1 Синдром деперсонализации-дереализации.
  4. II. Основные цели и задачи Программы, срок и этапы ее реализации, целевые индикаторы и показатели
  5. II. Примеры проективных методик
  6. III. Примеры решения задач.
  7. III. Примеры решения задач.
  8. III. Примеры решения задач.
  9. IV. Определение компенсирующего объёма реализации при изменении анализируемого фактора
  10. IV. Примеры решения задач.

// Воок.срр - реализация класса СВоо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 ) ;


Дата добавления: 2014-12-03; просмотров: 6; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2020 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты