Добавлен: 28.11.2018
Просмотров: 1302
Скачиваний: 20
Конструктор с параметрами создает объект с заранее определенным
набором свойств:
Book::Book(std::string Auth, std:: Ttl, int
y)
{
Author = Auth;
Title = Ttl;
Year = y;
}
Кроме конструктора, в составе класса есть еще один служебный метод
—
деструктор.
Деструктор выполняет разрушение объекта, он не имеет
параметров, находится в разделе public, не имеет типа возвращаемого
значения, а имя отличается от имени конструктора одним символом: знаком
~ (тильда) в начале.
Book::~Book()
{
// Деструктор по умолчанию
}
Явный вызов деструктора вставлять в программу не требуется — он
вызывается автоматически. Если для данных класса не выделяется
динамическая память, деструктор можно не включать в класс — он будет
добавлен автоматически компилятором.
В описании конструктора и любого другого метода класса (в
реализации) используется оператор разрешения области видимости ::. Этот
оператор позволяет включить идентификаторы в заданное пространство имен
namespace
. Для функций-членов класса пространством имен будет класс.
Если не использовать оператор ::, получится глобальная функция, не
связанная с классом.
Примеры создания объектов
Book B1
; // Создание объекта с помощью конструктора по
//
умолчанию
Book B2(“Pushkin”,”Evgeny Onegin”,2003);
//
Создание объекта с помощью
конструктора с параметрами
Book B3[3];
// Создание массива объектов с помощью
//
конструктора по умолчанию
Для доступа к свойствам и методам в функциях-членах данного класса
используется только имя свойства или метода
Book::Book(std::string Auth, std::Ttl, int y)
{
Author = Auth;
. . .
}
Также возможно обратиться к члену того же класса с помощью
указателя на текущий объект this
Book::Book(std::string Auth, std::Ttl, int y)
{
this->Author = Auth;
. . .
}
Для доступа сторонних объектов к свойствам и методам объекта какого-
либо класса используется имя объекта и операция точка (.)
P1.SetAuthor(”Gogol”);
Сторонние объекты также могут обращаться к свойствам и методам
какого-либо объекта с помощью указателя на объект и операции стрелка (→):
Book* ptr = &P1
; // инициализация указателя на объект
ptr->GetAuthor
(); // обращение к методу объекта через
//
указатель
Пример простейшей реализации методов класса Book:
void Book::SetAuthor(std::string Auth)
{
Author = Auth;
}
std::string Book::GetAuthor()
{
return Author;
}
Работа с переменными типа string.
В языке С строки задаются как массив символов с нуль-символом в
конце массива (chat c[10]) и имеются функции :
strcpy(c1,c2)
–
копирование строк;
strcat(c1,c2)
–
объединение строк;
strcmp(c1,c2)
–
сравнение строк;
и другие.
Используя эти функции, необходимо проверять, достаточно ли выделено
места для строки, куда будет записана результирующая строка.
В языке С++ имеется класс string, он освобождает программиста от
заботы о выделении памяти. В этом классе определены операции
присваивания (=), конкатенации (+), сравнения (= =, <, >,....) и другие. Это
позволяет записывать действия со строками как с числовыми переменными.
string s1, s2,s3;
//
конструктор создаёт три объекта string:
s1,s2,s3
s1="new";
//s1
присваивается значение new
s2=s1;
//
строка s1 копируется в s2
s3=s1+s2;
//
строки s1 и s2 объединяются и записываются в строку
s3
if (s1<s2) cout<<s1;
//
при сравнении строк меньшей считается
та, у которой код первого несовпадающего символа меньше.
Для использования класса необходимо подключить заголовочный файл
<string
>
Более подробные сведения о классах вы найдёте в лекциях и книгах,
указанных в списке литературы.
Вопросы к контрольной работе.
1.
Что такое класс в объектно-ориентированном
программировании?
2.
Какую структуру имеет модуль в С++?
3.
Какими средствами осуществляется консольный ввод данных в
языке Си, С++?
4.
Какие свойства (принципы) объектно-ориентированного
программирования вы знаете?
5.
Сконструируйте простейший класс с конструктором по
умолчанию и конструктором с параметрами. Покажите, как с
помощью этих конструкторов можно создать объекты.