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

Використовування ключового слова inline

В C++ за допомогою ключового слова inline, що передує імені функції, можна оголосити так звану вбудовану (inline) функцію. Якщо компілятор C++ зустрічає ключове слово inline, він розміщує у виконуваний файл (машинна мова) оператори цієї функції безпосередньо в місці кожного її виклику (вбудований код). Таким чином, програми написані з використанням вбудованих (inline) функцій, більш зрозумілі при читанні і в той же час мають більшу продуктивність, оскільки вдається уникнути затрат часу на виклик функцій (звичайних), розміщення їх аргументів в стек, перехід у функцію і вихід з неї. Наступна програма INLINE.CPP визначає функції max і min як inline:

_

Inline int max(int а, int b)

{

if (а > b)

return(а);

else

return(b);

}

Inline int min(int а, int b)

{

if (а < b)

return(а);

else

return(b);

}

Void main(void)

{

cout << "Мінімум з 1001 і 2002 рівний " <<

min(1001, 2002) << endl;

cout << "Максимум з 1001 і 2002 рівний " <<

max(1001, 2002) << endl;

}

В даному випадку компілятор C++ замінить кожний виклик функції на відповідні оператори функції. Продуктивність програми збільшується без її ускладнення.

Вбудовані функції і класи

При визначенні класу ви визначаєте функції цього класу всередині або зовні класу. Наприклад, клас employee визначає свої функції усередині самого класу:

class employee {

public:

employee(char *name, char *position, float salary)

{

strcpy(employee::name, name);

strcpy(employee::position, position);

employee::salary = salary;

}

Void show_employee(void)

{

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

cout << "Посада: " << position << endl;

cout << "Оклад: $" << salary << endl;

}

private:

char name[64];

char position[64];

float salary;

};

Розміщуючи функції всередині класу, ви тим самим оголошуєте їх вбудованими. Якщо створювати вбудовані функції класу таким способом, C++ дублює функцію для кожного створюваного об'єкту цього класу, розмішуючи вбудований код при кожному посиланні на метод (функцію) класу. Перевага такого способу полягає в зростанні продуктивності програми. Недоліком є дуже швидке збільшення об'єму самого визначення класу.

Для більш компактнішого визначення класу можна винести функції за межі опису класу і розмістити перед функціями ключове слово inline. Наприклад, наступне визначення вказує компілятору використовувати вбудовані оператори для функції show_employee:

Inline void employee::show_employee(void)

{

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

cout << "Посада: " << position << endl;

cout << "Оклад: $" << salary << endl;

}

Використовування операторів мови асемблера

Програмісти можуть створювати програми, посилаючись на широкий спектр мов програмування. Компілятор перетворює оператори програм в машинний код - нулі і одиниці, які сприймає комп'ютер. Кожний тип комп'ютерів підтримує проміжну мову, звану мовою асемблера, яка потрапляє в категорію між машинною мовою (низького рівня) і мовою програмування високого рівня, такою як наприклад C++.

Залежно від призначення програм, можливо, буде потрібно виконати операції низького рівня. У таких випадках можна використати оператор C++ asm для введення операторів мови асемблера в програму. Наступна програма USE_ASM.CPP використовує asm, щоб вставити оператори мови асемблера, необхідні для звучання динаміка комп'ютера в середовищі MS-DOS [1]:

_