- •Лабораторная работа №7
- •Теоретические сведения
- •Определение класса
- •Управление доступом
- •Элементы класса
- •Элементы данных
- •Элементы функции
- •Доступ к элементам-данным
- •Вызов функций-элементов
- •Указатель this
- •Конструктор
- •Деструктор
- •Дружественные классы
- •Дружественные функции
- •Перегрузка функций-элементов
- •Перегрузка операций
- •Примеры программирования
- •Контрольные вопросы.
- •Лабораторное задание
- •Варианты заданий
Доступ к элементам-данным
Функции-элементы находятся в области действия класса, в котором они определены. Т.о. они могут обращаться к любому элементу класса Б, используя просто имя переменной. Обычные функции или функции-элементы другого класса могут получить доступ к элементам-данным с помощью операции . или ->, применяемых к представителю или указателю на представитель класса.
Пример.
class coord{
public:int x,y; // координаты x и y
};
void main()
{
coord org; // представитель класса координат
coord *orgptr=&org; // указатель на представитель класса
org.x=0; // задание значения координаты x
orgptr->y=0; // задание значения координаты y
}
Вызов функций-элементов
Функции-элементы класса могут вызывать другие функции-элементы того же класса, используя имя функции. Обычные функции или функции-элементы других классов могут вызывать элементы класса с помощью операций . и ->, применяемых к представителю или указателю на представитель класса.
Пример.
class coord{
int x,y; // координаты x и y
public:
void setcoord(int _x, int _y) // функция задания значений координат
{ x=_x; y=_y;};
void getcoord(int &_x,int &_y) // функция полуцения значений координат
{ _x=x; _y=y;};
};
void main()
{
coord org; // представитель класса координат
coord *org*ptr=&org; // указатель на представитель класса
org.setcoord(10.10); // вызов функции-элемента задания
// значений
int col,row;
orgptr->getcoord(col,row); // вызов функции-элемента получения
// значений координат
}
Указатель this
Каждая нестатическая функция-элемент имеет доступ к объекту для которого вызвана, через ключевое слово this. Типом this является: тип_класса *.
Пример.
class simple
{
public:
simple();
void greet() { printf(“ Hello!”);};
};
simple::simple()
{
greet(); // вызов
this->greet(); // функции
(*this).greet(); // greet()
}
Т.к. функции-элементы могут обращаться ко всем элементам класса просто по имени, в основном указатель this используется для возврата указателя (return this ) или ссылки ( return *this ) на подразумеваемый объект.
Конструктор
Конструктор инициализирует представитель класса (объект ) и является функцией-элементом с тем же именем, что и класс. Конструктор вызывается компилятором всегда, когда создается представитель класса.
Для конструкторов выполняются следующие правила:
-для конструктора не указывается возвращаемый тип;
-конструктор не может возвращать значение;
-конструктор не наследуется.
Деструктор
Деструктор является дополнением конструктора. Он имеет то же имя, что и класс, но с префексом-тильдой (~). Он вызывается всякий раз, когда уничтожается представитель класса. Для деструктора существуют следующие правила:
-деструктор не может иметь аргументов;
-деструктор не может возвращать значения;
-деструктор не наследуется.
Дружественные классы
Разрешить элементам другого класса полный доступ к элементам данного класса, объявленным как private или protected, можно включив в определение данного класса описание friend.
Пример.
class myclass
{
friend class another_class;
};