Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Охарактеризуйте особливості inline-функцій та inline-методів класів.
Используя встроенные (inline) функции, ваши программы будут выполняться немного быстрее.
Используя встроенные (inline) функции, ваши программы остаются удобными для чтения (читающий программу видит вызов функции), но вы избегаете издержек на вызов функции, которые вызваны помещением параметров в стек и их последующим извлечением из стека, а также переходом к телу функции и последующим возвратом из нее.
При объявлении функции внутри программы C++ позволяет вам предварить имя функции ключевым словом inline. Если компилятор C++ встречает ключевое слово inline, он помещает в выполнимый файл (машинный язык) операторы этой функции в месте каждого ее вызова. Таким образом, можно улучшить читаемость ваших программ на C++, используя функции, и в то же время увеличить производительность, избегая издержек на вызов функций.
Если компилятор C++ перед определением функции встречает ключевое слово inline, он будет заменять обращения к этой функции (вызовы) на последовательность операторов, эквивалентную выполнению функции. Таким образом ваши программы улучшают производительность, избавляясь от издержек на вызов функции и в то же время выигрывая в стиле программы, благодаря использованию функций.
Ключевое слово inline заставляет компилятор C++ заменять вызов функции эквивалентной последовательностью операторов, которые бы выполняла эта функция. Поскольку встроенные операторы избавляют от издержек на вызов функции, программа будет выполняться быстрее.
31. Операції у мові С++. Їх класифікація та використання у програмах.
Позначки операцій – це один або декілька символів, що визначають дію над операндами. Операції поділяють на унарні, бінарні та тернарні за кількістю операндів, які беруть участь в операції (таблиця 3.2).
Таблиця 3.2.
Операція
| Короткий опис
| | Унарні операції
| &
| Операція одержання адреси операнда
| | *
| Звернення за адресою (розіменування)
| | -
| Унарний мінус – змінює знак арифметичного операнда
| | ~
| Порозрядове інвертування внутрішнього двійкового коду (побітове заперечення)
| | !
| Логічне заперечення (НЕ) значення операнда. Цілочисельний результат 0 (якщо операнд ненульовий, тобто істинний) або 1 (якщо операнд нульовий, тобто хибний). Таким чином:! 1 дорівнює 0;! 2 дорівнює 0;! (-5)=0;! 0 дорівнює 1.
| | ++
| Інкремент (збільшення на одиницю):
Префіксна операція (++х) збільшує операнд на 1 до його використання.
Постфіксна операція (х++) збільшує операнд на 1 після його використання.
int m=1, n=2;
int a=(m++)+n; // a=3, m=2, n=2
int b=m+(++n); // b=6, m=2, n=3
| | - -
| Декремент (зменшення на одиницю):
Префіксна операція (--х) зменшує операнд на 1 до його використання.
Постфіксна операція (х--) зменшує операнд на 1 після його використання.
| | sizeof
| Обчислення розміру (в байтах) об¢ єкта того типу, який має операнд. Має дві форми:
1) sizeof (вираз);
sizeof(1.0); // Результат - 8,
Дійсні константи за замовчуванням мають тип double;
2) sizeof (тип)
sizeof (char); // Результат – 1.
| | Бінарні операції
| Арифметичні операції
| +
| Бінарний плюс (додавання арифметичних операндів)
| | -
| Бінарний мінус (віднімання арифметичних операндів)
| | Мультиплікативні
| *
| Добуток операндів арифметичного типу
| | /
| Ділення операндів арифметичного типу (якщо операнди цілочисельні, абсолютне значення результату заокруглюється до цілого, тобто 20/3 дорівнює 6)
| | %
| Одержання залишку від ділення целочисельних операндів (13%4 = 1)
| | Операції зсуву (визначені лише для цілочисельних операндів)
| < <
| Зсув вліво бітового представлення значення лівого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда (4< < 2 дорівнює 16, т.я. код 4 100, а звільнені розряду обнуляються, 10000 – код 16)
| | > >
| Зсув вправо бітового представлення значення правого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда
| | Порозрядні операції
| &
| Порозрядна кон’юнкція (І) бітових представлень значень цілочисельних операндів
| | |
| Порозрядна диз’юнкція (АБО) бітових представлень значень цілочисельних операндів
| | ^
| Порозрядне виключне АБО бітових представлень значень цілочисельних операндів
| | Операції порівняння
| <
| Менше, ніж
| | >
| Більше, ніж
| | < =
| Менше або рівне
| | > =
| Більше або рівне
| | = =
| Рівне
| | ! =
| Не рівне
| | Логічні бінарні операції
| & &
| Кон’юнкція (І) цілочисельних операндів або відношень, цілочисельний результат (0) або (1)
| | ||
| Диз’юнкція (АБО) цілочисельних операндів або відношень, цілочисельний результат (0) або (1) (умова 0< x< 1 мовою С++ записується як 0< x & & x< 1)
| | Тернарна операція
| Умовна операція
| ?:
| Вираз1? Вираз2: Вираз3;
Першим вираховується значення Виразу1. Якщо воно істинне, тоді обчислюється значення Виразу2, яке стає результатом. Якщо при обчисленні Виразу1 одержуємо 0, тоді в якості результату береться значення Виразу3.
Наприклад:
х< 0? -x: x; //обчислюється абсолютна величина x.
| |
32 Система пріоритетів операцій у мові С++. Обчислення виразів, що містять прафіксні та постфіксні операції (++, --).
|