[БЕЗ_ЗВУКА] Мы с вами делали обзор операций, которые можно делать со значениями различных типов в C++. Теперь давайте познакомимся с этими операциями поподробнее и изучим их особенности, который свойственны именно языку программирования C++. Начнем с самой простой операции — с присваивания. Простейший пример: у нас есть переменная x = 5, и мы в нее записываем какое-то значение, например, 6. Давайте выведем, чему равна переменная x, скомпилируем нашу программу и запустим, и действительно вывелось 6. Так что здесь вы видите, что операция присваивания работает именно так, как любой читающий код будет ожидать. Но это самом деле пример неинтересный, интересный пример другой. Давайте объявим переменную s типа string и запишем в нее слово "hello". Также давайте объявим переменную t также типа string и запишем в нее s, присвоим переменной t переменную s, и возьмем и допишем в конец переменной t строчку ", world". И теперь давайте выведем переменную s. Даже не так, давайте выведем переменную s, перевод строки и переменную t. И напишем, какая строчка какой переменной соответствует. Давайте скомпилируем нашу программу, убедимся, что она компилируется, да, мы всё написали корректно. И вот такая программа в разных языках программирования будет вести себя по-разному. И этот пример как раз покажет, как присваивание, в данном случае вот это присваивание, присваивание строки s переменной t, себя ведет в C++. Давайте запустим нашу программу и увидим, что она вывела s — это "hello", а t — это "hello, world". То есть что мы сейчас увидели? Мы увидели, что при выполнении присваивания в C++ происходит полное глубокое копирование присваиваемой переменной. То есть мы записали в t значение s и произвели какие-то изменения значения в переменной t. При этом то, что у нас хранилось в s, не изменилось, потому что t теперь хранит полную копию того содержимого, которое было в переменной s. То есть если мы после изменения t, например, напишем s = какая-то другая строчка, например, «праздник», скомпилируем нашу программу, выполним, то увидим, что в переменной t как было "hello, world", так и осталось, что еще раз демонстрирует тот факт, что происходит глубокое копирование и в t независимая отдельная копия исходной строки. То же самое происходит и с переменными других типов. Давайте, например, объявим вектор строк, вектор строк w, и запишем в него какие-то строки: "a", "b", "c". И объявим еще один вектор строк v и оставим его пустым. Теперь давайте присвоим переменной v значение переменной w. И после этого в первый элемент вектора v запишем какую-то другую строку, "d". И теперь давайте выведем w[0], w[1] и то же самое для вектора v. Скомпилируем нашу программу, она компилируется, запустим и видим, что у нас в первой строке вывелось a b — это первые два элемента вектора w, а во второй строке d b, то есть вектор v у нас хранит полную копию вектора w, и первый элемент, мы сами его поменяли на d, в нем равен строке "d". Таким образом, в этом видео вы познакомились с особенностями работы присваивания в C++ и узнали, что при присваивании происходит полное глубокое копирование значения одной переменной в другую.