- •Вирази і оператори.
- •Логічні оператори.
- •Оператор розгалуження.
- •Оператор вибору.
- •Арифметичні операції. Пріоритет виконання.
- •Вказівники константи.
- •Вказівники змінні.
- •Функції.
- •Функція для роботи з файлами.
- •Передача аргументів у функцію.
- •Значення, яке повертає функція.
- •Рекурсивні функції.
- •Блоки і область видимості змінних.
- •Оператори повторення.
- •Структури. Вкладені структури.
- •Створення класів.
- •Управління виконанням програм.
- •Одновимірні масиви даних.
- •Двовимірні масиви даних.
- •Створення масивів з використанням вказівників.
- •Алгоритми сортування масивів.
- •Рядки і операції над ними.
- •Функції введення-виведення.
- •Конструктори, деструктори.
- •Класи. Успадкування.
- •Класи. Поліморфізм.
- •Класи. Інкапсуляція.
- •Вказівник this.
- •Перевантаження операцій та операторів.
- •Поліморфізм і віртуальні функції.
- •Стандартний клас string.
- •Стандартний клас queue.
- •Стандартний клас vector.
- •Стандартний клас list.
- •Стандартний клас stack.
- •Створення і використання шаблонів функцій та класів.
- •Стандартна бібліотека шаблонів (stl)
- •Доступність методів класу.
- •Конструктор та деструктор класів.
- •Наслідування класів.
- •Використання просторів імен.
- •Шаблони функцій.
- •Шаблони класів.
- •Алгоритми стандартної бібліотеки stl.
- •Динамічні структури типу стек.
- •Динамічні структури типу однонаправлений список.
- •Динамічні структури типу двонаправлений список.
- •Сортування масивів із використанням вказівників.
Поліморфізм і віртуальні функції.
Поліморфізм – це концепція яка надає можливість однотипно працювати з об'єктами різних класів за допомогою одного уніфікованого інтерфейсу, або «один інтерфейс – багато реалізацій»
Віртуальна функція (віртуальний метод) це метод класу поведінка якого може бути перевизначена у класах нащадках методами з такою самою сигнатурою. Таким чином конкретна реалізація потрібного методу буде обрана під час виконання в залежності від типу.
Приклад коду:
class Animal
{
virtual ~Animal() {}
virtual void DoSound() {}
};
class Cat : public Animal
{
void DoSound() { std::cout << "Mew!" << std::endl; }
};
class Dog : public Animal
{
void DoSound() { std::cout << "Wow" << std::endl; }
};
class Frog : public Animal
{
void DoSound() { std::cout << "Croc!" << std::endl; }
};
Стандартний клас string.
Найпоширенішим типом, що вживається практично у кожному проекті, є тип string . Його можна запрограмувати самому, але вживання власного типу string створить проблеми сумісності, утруднить вживання програми в інших умовах. Тому вживають стандартний клас string , що є компонентом стандартної бібліотеки С++.
Клас string забезпечує такі можливості:
Створення рядка символів.
Ініціалізацію рядка символів символьним масивом або іншим рядком.
Копіювання одного рядка до іншого (присвоєння).
Читання та запис окремих символів рядка.
Порівняння двох рядків на рівність.
Конкатенацію двох рядків.
Обрахунок довжини рядка.
Перевірку рядка на пустоту.
Знищення рядка символів.
Приклади використання
string st1; // створення порожнього рядка
//створення і ініціалізація
string st2( "Приклад ініціалізації" );
string st3 = st2; //теж ініціалізація
string st4 (st2); //ще одна ініціалізація
st1 = st2; //копіювання присвоєнням
cout << st1[1]; //читання символу
st1[1] = ’п’; //заміна символу
if (st3 == st2) //порівняння рядків на рівність
cout << “рівні”;
st1 = st2 + st3; //конкатенація
st2 = st3 + ”рядка”; //теж конкатенація
st2 += st3; //конкатенація з дописуванням в кінець рядка
cout << st.size(); //обчислення довжини рядка
if ( st1.empty()) //перевірка на пустоту
cout << ”рядок порожній”;
~string st1; //знищення рядка
Стандартний клас queue.
#include <queue>
За допомогою контейнера deque можна створити черга — структуру даних, організовану за принципом FIFO (“first in, first out” — “першим увійшов, першим вийшов”).
Як основу для створення черги може застосовуватися не тільки шаблонний клас deque, але й будь-яка інша послідовність, для якої передбачені функції front(), back(), push_back() і pop_front(). Зокрема, клас vector для цієї мети не підходить.
Як бачимо, у класі queue немає операції видалення останнього елемента — відповідно до принципу FIFO, операція pop видаляє тільки перший елемент, викликаючи з базового контейнера функцію pop_front(). Крім того, по тій же причині операція push вставляє новий об'єкт тільки в кінець черги, викликаючи з базового контейнера функцію push_back().
