Полное руководство по основам языка C++

Это подробное руководство по основам языка C++, включающее примеры программ, которые демонстрируют различные концепции программирования на C++.

Назад

Первая программа на C++

Каждая программа на C++ начинается с функции main():


#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
        

Типы данных

Основные типы данных в C++:

Арифметические операции

Пример использования арифметических операций в C++:


#include <iostream>

int main() {
    int a = 10, b = 20;
    int sum = a + b;
    int diff = b - a;
    int prod = a * b;
    int div = b / a;
    int mod = b % a;

    std::cout << "Sum: " << sum << std::endl;
    std::cout << "Difference: " << diff << std::endl;
    std::cout << "Product: " << prod << std::endl;
    std::cout << "Division: " << div << std::endl;
    std::cout << "Modulus: " << mod << std::endl;

    return 0;
}
        

Ввод/Вывод

Ввод и вывод данных с использованием cin и cout:


#include <iostream>

int main() {
    int num;
    std::cout << "Enter an integer: ";
    std::cin >> num;
    std::cout << "You entered: " << num << std::endl;

    return 0;
}
        

Условные операторы

Пример использования оператора if-else:


#include <iostream>

int main() {
    int num;
    std::cout << "Enter an integer: ";
    std::cin >> num;

    if (num > 0) {
        std::cout << "The number is positive." << std::endl;
    } else if (num < 0) {
        std::cout << "The number is negative." << std::endl;
    } else {
        std::cout << "The number is zero." << std::endl;
    }

    return 0;
}
        

Циклы

Пример цикла while:


#include <iostream>

int main() {
    int i = 0;

    while (i < 5) {
        std::cout << "i = " << i << std::endl;
        i++;
    }

    return 0;
}
        

Массивы

Пример работы с массивами:


#include <iostream>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {
        std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
    }

    return 0;
}
        

Функции

Пример создания и использования функции:


#include <iostream>

void greet() {
    std::cout << "Hello from the function!" << std::endl;
}

int main() {
    greet();
    return 0;
}
        

Классы и объекты

Пример создания и использования классов:


#include <iostream>

class Rectangle {
public:
    Rectangle(double w, double h) : width(w), height(h) {}

    double area() const {
        return width * height;
    }

    void display() const {
        std::cout << "Width: " << width << ", Height: " << height << ", Area: " << area() << std::endl;
    }

private:
    double width;
    double height;
};

int main() {
    Rectangle rect(5.0, 3.0);
    rect.display();
    return 0;
}
        

Наследование

Пример использования наследования в C++:


#include <iostream>

class Animal {
public:
    virtual void speak() const {
        std::cout << "Animal makes a sound." << std::endl;
    }
};

class Dog : public Animal {
public:
    void speak() const override {
        std::cout << "Dog barks." << std::endl;
    }
};

int main() {
    Animal* animal = new Dog();
    animal->speak();
    delete animal;
    return 0;
}
        

Работа с указателями

Пример работы с указателями:


#include <iostream>

int main() {
    int num = 10;
    int* ptr = #

    std::cout << "Value of num: " << num << std::endl;
    std::cout << "Value via pointer: " << *ptr << std::endl;

    *ptr = 20;
    std::cout << "New value of num: " << num << std::endl;

    return 0;
}
        

Динамическое выделение памяти

Пример динамического выделения и освобождения памяти:


#include <iostream>

int main() {
    int* ptr = new int; // выделение памяти
    *ptr = 10;

    std::cout << "Value: " << *ptr << std::endl;

    delete ptr; // освобождение памяти
    return 0;
}
        

Умные указатели

Пример использования умных указателей:


#include <iostream>
#include <memory>

class Resource {
public:
    Resource() {
        std::cout << "Resource acquired" << std::endl;
    }
    ~Resource() {
        std::cout << "Resource destroyed" << std::endl;
    }
};

int main() {
    std::unique_ptr ptr1 = std::make_unique();
    std::shared_ptr ptr2 = std::make_shared();

    // std::unique_ptr и std::shared_ptr автоматически освобождают память

    return 0;
}
        

Шаблоны функций и классов

Пример шаблонов функций и классов:


#include <iostream>

template <typename T>
T add(T a, T b) {
    return a + b;
}

template <typename T>
class Pair {
public:
    Pair(T first, T second) : first(first), second(second) {}
    T getFirst() const { return first; }
    T getSecond() const { return second; }

private:
    T first;
    T second;
};

int main() {
    std::cout << "Add: " << add(10, 20) << std::endl;
    Pair<int> intPair(1, 2);
    std::cout << "Pair: (" << intPair.getFirst() << ", " << intPair.getSecond() << ")" << std::endl;

    return 0;
}
        

Обработка исключений

Пример обработки исключений:


#include <iostream>

int divide(int a, int b) {
    if (b == 0) {
        throw std::runtime_error("Division by zero");
    }
    return a / b;
}

int main() {
    try {
        std::cout << "Result: " << divide(10, 2) << std::endl;
        std::cout << "Result: " << divide(10, 0) << std::endl;
    } catch (const std::exception& e) {
        std::cout << "Error: " << e.what() << std::endl;
    }

    return 0;
}
        

Работа с файлами

Пример работы с файлами в C++:


#include <iostream>
#include <fstream>

int main() {
    std::ofstream outFile("example.txt");
    if (outFile.is_open()) {
        outFile << "Hello, file!" << std::endl;
        outFile.close();
    }

    std::ifstream inFile("example.txt");
    std::string line;
    if (inFile.is_open()) {
        while (std::getline(inFile, line)) {
            std::cout << line << std::endl;
        }
        inFile.close();
    }

    return 0;
}