Использование оператора глобального разрешения для элементов класса 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование оператора глобального разрешения для элементов класса



 

Если вы рассмотрите функции в программе INFOHIDE.CPP, вы обнаружите, что имена параметров функции часто предваряются символами е mр_, как показано ниже:

int employee::assign_values (char *emp_name, long emp_id, float emp_salary)

Символы етр_ использовались, чтобы избежать конфликта между именами параметров функции и именами элементов класса.

При создании функций-элементов класса возможны ситуации, когда имя локальной переменной, которое вы используете внутри функции, конфликтует с именем элемента класса. По умолчанию, имя локальной переменной будет переопределять имя элемента класса. Когда происходит подобный конфликт имен, функция может использовать имя класса и оператор глобального разрешения (::) для доступа к элементам класса, как показано ниже:

int employee::assign_values(char *name, long employee_id, float salary)

{

strcpy (employee:: name, name);

employee:: employee_id = employee_id;

if (salary < 50000.0)

{

employee::salary = salary;

return(0); // Успешно

}

else

 return(-1); // Недопустимый оклад

}

При создании функций, работающих с элементами класса, вам следует использовать имя класса и оператор глобального разрешения, чтобы таким образом избежать конфликта имен.

 

Специальные функции-элементы класса

 

Специальными функциями-элементами называют функции, которые могут вызываться компилятором неявно. Это может происходить при создании и уничтожении представителей класса, при их копировании и преобразовании в другие типы. К таким функциям относятся:

Конструктор. Инициализирует представители класса.

Конструктор копии. Инициализирует новый представитель класса, используя значения существующего.

Операция присваивания. Присваивает содержимое одного представителя класса другому.

Деструктор. Производит очистку памяти от уничтожаемого объекта.

Операция new. Выделяет память для динамически создаваемого объекта.

Операция delete. Освобождает память, выделенную под динамический объект.

Функции преобразования. Преобразуют представитель класса в другой тип (и наоборот).

 

Конструктор и деструктор

 

При создании объектов одной из наиболее широко используемых операций, которую вы будете выполнять в ваших программах, является инициализация элементов данных объекта. Единственным способом, с помощью которого вы можете обратиться к частным элементам данных, является использование функций класса. Чтобы упростить процесс инициализации элементов данных класса, C++ использует специальную функцию, называемую конструктором, которая запускается для каждого создаваемого вами объекта. Подобным образом C++ обеспечивает функцию, называемую деструктором, которая запускается при уничтожении объекта. Таким образом:

• Конструктор представляет собой метод класса, который облегчает вашим программам инициализацию элементов данных класса при объявлении объекта.

• Конструктор имеет такое же имя, как и класс.

• Конструктор не имеет возвращаемого значения.

• Каждый раз, когда ваша программа создает переменную класса, C++ вызывает конструктор класса.

• Многие объекты могут распределять память для хранения информации; когда вы уничтожаете такой объект, C++ будет вызывать специальный деструктор, который может освобождать эту память, очищая ее после объекта.

• Деструктор имеет такое же имя, как и класс, за исключением того, что вы должны предварять его имя символом тильды (~).

• Деструктор не имеет возвращаемого значения.

Термины конструктор и деструктор не должны вас пугать. Вместо этого представьте конструктор как функцию, которая помогает вам строить (конструировать) объект. Подобно этому, деструктор представляет собой функцию, которая помогает вам уничтожать объект. Деструктор обычно используется, если при уничтожении объекта нужно освободить память, которую занимал объект.

 



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 57; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.31.159 (0.005 с.)