Страницы (2): [1] 2 » Показать все 18 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- И снова о подводных камнях С++ (https://hlfx.ru/forum/showthread.php?threadid=5071)
И снова о подводных камнях С++
Я люблю язык С++.
Я пока знаю его плохо, потому что изучаю всего 16 лет.
Но за эти годы я успел осознать, что никакие другие языки программирования мне не нужны.
Я чётко решил для себя, что работать буду только в компаниях, где пишут на С++.
Все (ну почти) мои проекты написаны на С++.
И все будущие проекты почти наверняка будут на нём написаны.
И всё же...
Тема не для холивара!
В ней мы будем собирать интересные головоломки, связанные с подводными камнями (а порой и лёгким налётом неадекватности) стандарта языка. Просьба не рассказывать про свои любимые Rust/Go/Swift и тем более жаб и шарпеев. Для них можно создать отдельную тему. В качестве исключения разрешается Дяде Мише написать пост о том, что он не понимает, зачем вообще нужны кресты (а также винды новее WinXP, студии новее 6-й и движки новее свежего XashNT), потому что обычного Си вполне хватает, и там нет вот этих вот (вписать нужное). Но только ему и только один раз!
Итак, начнём.
1 | struct foo { |
2 | foo() = default; |
3 | int a; |
4 | }; |
5 |
6 | struct bar { |
7 | bar(); |
8 | int b; |
9 | }; |
10 |
11 | bar::bar() = default; |
12 |
13 | int main() { |
14 | foo a{}; |
15 | bar b{}; |
16 | } |
__________________
cout << "Hello " << a.a << " and " << b.b << endl; |
nemyax
В релизе компилил?
__________________
Хуже, через браузер =)
https://www.tutorialspoint.com/compile_cpp_online.php
Но там, надо думать, гецеце и дебаг.
в дебаг нули, в релизе может быть мусор
__________________
vk.com/skullcapstudios
ComradeAndrew
В статье по ссылке всё очень хорошо объясняется.
__________________
Да, вроде не плохо объяснено.
Если я правильно понял определения, то в baz
1 | struct baz |
2 | { |
3 | baz() {} |
4 | int z; |
5 | }; |
ComradeAndrew
Конструктор baz явно указывает, что инициализировать z не нужно. Поэтому нет, нельзя сказать, что определения одинаковы.
__________________
Не подводный камень, конечно, но забавно.
Знаете ли вы, что вот эта конструкция - совершенно легальная в С++, и несёт в себе конкретный смысл?
[](){} |
__________________
Указазель на пустую функцию?
nemyax
Не совсем. Это пустая лямбда. Первые скобки - пустой список захвата. Вторые - пустой список аргументов. Третьи - пустое тело.
__________________
Ага, лямбды. Которые только в новых плюсах и которые используют полтора человека...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Дык они уже давно появились, ещё в С++11.
__________________
Временная зона GMT. Текущее время 01:23. | Страницы (2): [1] 2 » Показать все 18 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024