Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
nullptr
— это ключевое слово, введенное в стандарте C++11, которое представляет собой указатель на нулевой адрес. Оно заменяет использование NULL
, который в C++ является просто макросом, определенным как 0
. Использование nullptr
улучшает безопасность и ясность кода, так как он имеет тип std::nullptr_t
, что позволяет избежать неоднозначностей при перегрузке функций.
void foo(int* ptr) {
// Функция принимает указатель на int
}
void foo(double val) {
// Функция принимает double
}
foo(nullptr); // Вызовет foo(int*), так как nullptr имеет тип указателя
nullptr
помогает избежать ошибок, связанных с неявным преобразованием типов, и делает код более читаемым.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
#include <iostream>
// Определение структуры
struct Point {
int x;
int y;
// Метод для вывода координат
void print() {
std::cout << "Point(" << x << ", " << y << ")" << std::endl;
}
};
int main() {
// Создание экземпляра структуры
Point p;
p.x = 10;
p.y = 20;
// Вызов метода структуры
p.print(); // Вывод: Point(10, 20)
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
auto sum = [](int a, int b) -> int {
return a + b; // Возвращает сумму a и b
};
std::for_each
или std::sort
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
#include <iostream>
using namespace std;
// Базовый класс
class Animal {
public:
void eat() {
cout << "Eating..." << endl;
}
};
// Производный класс
class Dog : public Animal {
public:
void bark() {
cout << "Barking..." << endl;
}
};
int main() {
Dog dog;
dog.eat(); // Наследованный метод
dog.bark(); // Собственный метод
return 0;
}
Производный класс
Dog
наследует метод eat()
от базового класса Animal
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9✍2👨💻1
<iostream>
для консольного ввода/вывода и <fstream>
для работы с файлами.Пример создания потока для чтения из файла:
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream file("example.txt"); // Создание потока для чтения из файла
std::string line;
if (file.is_open()) {
while (getline(file, line)) { // Чтение файла построчно
std::cout << line << std::endl; // Вывод строки на консоль
}
file.close(); // Закрытие файла
} else {
std::cerr << "Не удалось открыть файл" << std::endl;
}
return 0;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
template
, за которым следует список параметров шаблона в угловых скобках. Пример:
template <typename T>
T add(T a, T b) {
return a + b; // Функция складывает два значения типа T
}
T
— это параметр шаблона, который будет заменен на конкретный тип данных при вызове функции add
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
shared_ptr
. Он не увеличивает счетчик ссылок на объект, что помогает избежать циклических зависимостей и утечек памяти.weak_ptr
используется для проверки существования объекта и получения shared_ptr
, если объект еще существует. Для этого применяется метод lock()
, который возвращает shared_ptr
.#include <iostream>
#include <memory>
class Node {
public:
std::weak_ptr<Node> next; // Слабая ссылка на следующий узел
};
int main() {
auto node1 = std::make_shared<Node>();
auto node2 = std::make_shared<Node>();
node1->next = node2; // Установка слабой ссылки
if (auto sharedNext = node1->next.lock()) {
std::cout << "Next node is alive\n";
} else {
std::cout << "Next node is expired\n";
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤩1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
try
, catch
и throw
.
try {
// Код, который может вызвать исключение
if (errorCondition) {
throw std::runtime_error("Error occurred");
}
} catch (const std::exception& e) {
// Обработка исключения
std::cout << "Exception caught: " << e.what() << std::endl;
}
try
блок содержит код, который может вызвать исключение. throw
используется для генерации исключения. catch
блок перехватывает и обрабатывает исключение, предоставляя возможность восстановить выполнение программы.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👨💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
#include <type_traits>
// Функция доступна только для целых типов
template <typename T>
typename std::enable_if<std::is_integral<T>::value, T>::type
foo(T value) {
return value * 2;
}
// Функция доступна только для вещественных типов
template <typename T>
typename std::enable_if<std::is_floating_point<T>::value, T>::type
foo(T value) {
return value / 2;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
vector
и list
— это контейнеры STL, но они имеют разные структуры и характеристики.vector
— это динамический массив, который обеспечивает быстрый доступ к элементам по индексу и эффективное добавление элементов в конец. Однако вставка или удаление элементов в середине может быть медленной, так как требует сдвига элементов.list
— это двусвязный список, который позволяет быстро вставлять и удалять элементы в любом месте, но доступ к элементам по индексу медленный, так как требует последовательного обхода.Выбор между ними зависит от требований к производительности операций доступа и модификации.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
#include <iostream>
using namespace std;
class Base {
public:
virtual void show() { // Виртуальная функция
cout << "Base class" << endl;
}
};
class Derived : public Base {
public:
void show() override { // Переопределение функции
cout << "Derived class" << endl;
}
};
int main() {
Base* obj = new Derived();
obj->show(); // Вызов функции Derived
delete obj;
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1