Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мищишин електронка.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
1.04 Mб
Скачать

21. Структури і функції

Якщо функція не змінює структуру, ви можете передати структуру у функцію через ім'я. Наприклад, наступна програма SHOW_EMP.CPP використовує функцію show_employee для виведення елементів структури типу employee:

struct employee {

char name[64];

long employee_id;

float salary;

char phone[10];

Int office_number;

};

Void show_employee(employee worker)

{

cout << "службовець: " << worker.name << endl;

cout << "телефон: " << worker.phone << endl;

cout << "номер службовця: " << worker.employee_id << endl;

cout << "ставка: " << worker.salary << endl;

cout << "офіс: " << worker.office_number << endl;

}

Void main(void)

{

employee worker;

strcpy(worker.name, "Джон Дой"); // Копіювати ім'я в рядок

worker.employee_id = 12345;

worker.salary = 25000.00;

worker.office_number = 102;

strcpy(worker.phone, "555-1212"); // Копіювати номер телефону в

//рядок

show_employee(worker);

}

Як бачите, програма передає змінну даної структури worker у функцію show_employee через ім'я. Далі функція show_employee виводить елементи структури. Проте зверніть увагу, що програма тепер визначає структуру employee ззовні main і до функції show_employee. Оскільки функція оголошує змінну worker типу employee, визначення структури employee повинне розташовуватися до функції.

22. класи C++

Клас дозволяє програмам групувати дані і функції, які виконують операції над цими даними. Більшість книг з об'єктно-орієнтованого програмування називає функції класу методами. Подібно структурі, клас C++ повинен мати унікальне ім'я, за яким слідує відкриваюча фігурна дужка, один або декілька елементів і закриваюча фігурна дужка [7]:

class class_name {

int data_member; // Елемент даних

void show_member(int); // Функція-елемент

};

Після визначення класу ви можете оголошувати змінні цього класу (звані об'єктами), як показано нижче:

class_name object_one, object_two, object_three;

Наступне визначення створює клас employee, що містить визначення даних і методу:

class employee {

public:

char name[64];

long employee_id;

float salary;

Void show_employee(void)

{

cout << "Ім'я: " << name << endl;

cout << "Номер службовця: " << employee_id << endl;

cout << "Ставка: " << salary << endl;

};

};

В цьому випадку клас містить три змінних і одну функцію-елемент. Зверніть увагу на використовування відмітки public усередині визначення класу. Елементи класу можуть бути приватними (private) або загальними (public), від цього залежить, як ваші програми звертаються до елементів класу. В даному випадку всі елементи є загальними, це означає, що програма може звертатися до будь-якого елемента, використовуючи оператор крапку. Після визначення класу всередині вашої програми ви можете оголосити об'єкти (змінні) типу цього класу, як показано нижче:

employee worker, boss, secretary;

23. Визначення методів класу зовні класу

В попередньому класі employee функція була визначена усередині самого класу (вбудована (inline) функція). При збільшенні функцій визначення вбудованих функцій усередині класу може внести безладдя в опис класу. Як альтернатива ви можете помістити прототип функції усередині класу, а потім визначити функцію зовні класу. Ваше визначення класу з прототипом стає наступним:

class employee {

public:

char name[64];

long employee_id;

float salary;

void show_employee (void); // Прототип функції

};

Оскільки різні класи можуть використовувати функції з однаковими іменами, ви повинні спочатку вказати ім’я класу і оператор глобального дозволу (::), а потім перераховувати імена функцій, визначених ззовні класу. В даному випадку визначення функції стає наступним:

void employee::show_employee(void) //Ім'я класу employee

//Ім'я елемента show_employee

{

cout << "Ім’я: " << name << endl;

cout << "номер службовця: " << employee_id << endl;

cout << "Ставка: " << salary << endl;

};

Наступна програма CLASS FUN. CPP містить визначення функції show_employee ззовні класу, використовуючи оператор глобального дозволу вказівказано ім’я класу :

class employee {

public:

char name[64];

long employee_id;

float salary;