Update ternary_operator.md: typos (#120)

Деаллоцировали пару лишних буковок
This commit is contained in:
Aleksandr
2025-04-28 20:17:00 +03:00
committed by GitHub
parent 342ef8ac3d
commit 490c41e9b8
+5 -5
View File
@@ -50,7 +50,7 @@ let output: &mut dyn std::io::Write = match confg {
Вернемся теперь к C++. В нем, конечно, `switсh` не такой удобный и `if - else` не является выражением — не может возвращать значения. Но в C++ есть тернарный оператор, а вот он уже что-то возвращает.
Посмотрим на довольно распространенный сценарий: у нас есть некоторый key-value контейнер с неисзменяемой конфигурацией. Мы обращаемся к какому-то ключу, если он там есть -- отлично. Иначе -- используем значение по умолчанию.
Посмотрим на довольно распространенный сценарий: у нас есть некоторый key-value контейнер с неизменяемой конфигурацией. Мы обращаемся к какому-то ключу, если он там есть -- отлично. Иначе -- используем значение по умолчанию.
```C++
using Map = std::map<int, std::string>;
@@ -199,17 +199,17 @@ let updated_uri: &str = if !query.is_empty() {
uri
}
```
С++ не позволяет себе такой неявности и сопряженных с ней некладных расходов.
С++ не позволяет себе такой неявности и сопряженных с ней накладных расходов.
Также копированине в тернарном операторе — это в некотором роде безопасное поведение по умолчанию: если результатом станет копия, то это точно не висячая ссылка!
Также копирование в тернарном операторе — это в некотором роде безопасное поведение по умолчанию: если результатом станет копия, то это точно не висячая ссылка!
Последние примеры. Шестой.
```C++
test_default_getter(m, 42, []{ return "default"s; });
```
То же самое что и с четвертым и пятым, только возвращается чистое временное значенине, а не ссылка
То же самое что и с четвертым и пятым, только возвращается чистое временное значение, а не ссылка
`const std::string& : std::string` даст в результате `std::string`. И левый аргумент всегда будет скопирован.
@@ -263,7 +263,7 @@ int main() {
}
```
Поскольку мы теперь знаем, как работает тернарный оператор и что в райнтайме он по условию время жизни не продляет, можно относительно легко понять, что в обоих случаях произойдет копирование `a`. А вместе с ним и слайсинг — только подобъект базового класса будет скопирован. И дважды будет [выведено](https://godbolt.org/z/5j5hx4PWf) `base`.
Поскольку мы теперь знаем, как работает тернарный оператор и что в рантайме он по условию время жизни не продляет, можно относительно легко понять, что в обоих случаях произойдет копирование `a`. А вместе с ним и слайсинг — только подобъект базового класса будет скопирован. И дважды будет [выведено](https://godbolt.org/z/5j5hx4PWf) `base`.
А что если попробовать наоборот?