FFlauron
C++ Basic
Безкоштовний урок-прев'ю

Вступ до C++: компілятор, IDE, перша програма, стандарти

C++ — мова системного й прикладного програмування з прямим керуванням пам'яттю і максимальною продуктивністю. На ньому пишуть ігри (Unreal Engine, Counter-Strike), браузери (Chrome, Firefox), фінансові системи, embedded, ОС, бази даних.

Чому C++

  • Швидкість — близько до бінарних обмежень заліза
  • Контроль пам'яті — сам вирішуєш коли і як виділяти/звільняти
  • Багатопарадигмова — імперативна, ООП, шаблонне (generic), функціональна
  • Зрілий ринок — Senior C++-розробники у топ-3 за зарплатою
  • Близько до заліза — основа для embedded, real-time, ігор

⚠ C++ — складна мова. Потребує дисципліни. На відміну від Python, тут легко зробити витік пам'яті, undefined behavior, segfault.

Інструменти

Компілятор

  • Linux/macOS: g++ (GCC) або clang++ — є з коробки або через apt install build-essential
  • Windows: MSVC (Visual Studio Community) або MinGW

Перевір:

g++ --version    # GCC 12+ або 13+ підтримує C++20/23
clang++ --version

IDE

  • CLion (JetBrains, платний) — найкращий для C++
  • Visual Studio (Windows, безкоштовний Community) — стандарт у Windows-світі
  • VS Code + extensions C/C++ — легкий і зручний

Перша програма

hello.cpp:

#include <iostream>

int main() {
    std::cout << "Привіт, C++!" << std::endl;
    return 0;
}

Компіляція й запуск:

g++ -std=c++20 hello.cpp -o hello
./hello

-std=c++20 — використовуємо стандарт C++20. У старих туторіалах часто C++11 — це 2011 рік, давно застаріло. У 2026 актуальні C++20/23.

Структура

#include <iostream>     // підключити стандартний потік вводу/виводу

int main() {            // точка входу
    // код
    return 0;           // 0 = успіх (POSIX-конвенція)
}
  • #include <...> — препроцесорна директива, додає декларації з заголовкового файлу
  • int main() — кожна програма має main як точку входу
  • ; в кінці кожної інструкції — обов'язково
  • {} — блоки коду

std:: — простір імен

std::cout, std::endl, std::string — усе зі стандартної бібліотеки лежить у namespace std.

#include <iostream>
using namespace std;   // ⚠ зручно, але не рекомендовано в великих проєктах
                       // бо може плутати імена з власними

В малих програмах using namespace std; ОК. У продакшені пишуть std:: явно або using std::cout;.

std::cout та std::cin

#include <iostream>
#include <string>

int main() {
    std::string name;
    std::cout << "Як тебе звуть? ";
    std::cin >> name;                       // зчитати до пробілу
    std::cout << "Привіт, " << name << "!\n";

    int age;
    std::cout << "Скільки років? ";
    std::cin >> age;
    std::cout << "Через 10 років буде " << (age + 10) << ".\n";
    return 0;
}
  • << — оператор виводу (виштовхуємо в потік)
  • >> — оператор вводу (приймаємо з потоку)
  • \n — новий рядок (швидше за std::endl, який ще й скидає буфер)

Коментарі

// однорядковий

/*
   багаторядковий
   коментар
*/

Компіляція в кілька кроків

Великий проєкт зазвичай має кілька .cpp і .h файлів. Компілюється так:

g++ -c file1.cpp -o file1.o
g++ -c file2.cpp -o file2.o
g++ file1.o file2.o -o program

Або одною командою:

g++ -std=c++20 file1.cpp file2.cpp -o program

В реальних проєктах це робить CMake (стандарт у C++-світі) — не пишеш команди руками.

Стандарти

Стандарт Рік Що приніс
C++98/03 1998/2003 Базова мова
C++11 2011 Революція: auto, lambdas, smart pointers, move-семантика
C++14 2014 Дрібні покращення
C++17 2017 structured bindings, optional, variant, filesystem
C++20 2020 concepts, ranges, coroutines, modules
C++23 2023 print, expected, mdspan

У навчанні пишемо сучасний C++20 — не C++98.

Тест: перевір себе

  1. Що робить #include <iostream>?
  2. Чим \n краще за std::endl?
  3. Що значить int main() повертає 0?
  4. Чому using namespace std; погано в великих проєктах?
  5. Як скомпілювати з підтримкою C++20?
Відповіді
  1. Препроцесор додає декларації зі стандартного заголовкового файлу iostream — це дає доступ до cout, cin тощо.
  2. \n лише вставляє символ нового рядка. std::endl ще й примусово скидає буфер виводу — повільніше. Для більшості випадків \n достатньо.
  3. POSIX-конвенція: 0 = успішне завершення, ненульове число = помилка (різні коди для різних типів помилок).
  4. У великій кодовій базі багато ідентифікаторів. std:: робить явним джерело. using namespace std; затягує всі імена з std — може плутати з власними (наприклад, count, find).
  5. g++ -std=c++20 file.cpp -o program. Для clang: clang++ -std=c++20 ....

Сподобався урок?

Придбайте повний курс, щоб отримати доступ до всіх уроків.

Перейти до курсу