Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > И снова о подводных камнях С++
Скандалы, интриги, расследования
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


Хитрота И снова о подводных камнях С++

Я люблю язык С++.
Я пока знаю его плохо, потому что изучаю всего 16 лет.
Но за эти годы я успел осознать, что никакие другие языки программирования мне не нужны.
Я чётко решил для себя, что работать буду только в компаниях, где пишут на С++.
Все (ну почти) мои проекты написаны на С++.
И все будущие проекты почти наверняка будут на нём написаны.
И всё же...

Тема не для холивара!
В ней мы будем собирать интересные головоломки, связанные с подводными камнями (а порой и лёгким налётом неадекватности) стандарта языка. Просьба не рассказывать про свои любимые Rust/Go/Swift и тем более жаб и шарпеев. Для них можно создать отдельную тему. В качестве исключения разрешается Дяде Мише написать пост о том, что он не понимает, зачем вообще нужны кресты (а также винды новее WinXP, студии новее 6-й и движки новее свежего XashNT), потому что обычного Си вполне хватает, и там нет вот этих вот (вписать нужное). Но только ему и только один раз!

Итак, начнём.

C++ Source Code:
struct foo {
    foo() = default;
    int a;
};

struct bar {
    bar();
    int b;
};

bar::bar() = default;

int main() {
    foo a{};
    bar b{};
}


что будет в a.a и b.b?
Ответ под катом.
Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 169128

Старое сообщение 01-12-2017 07:32
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 2014

Рейтинг



C++ Source Code:
cout << "Hello " << a.a << " and " << b.b << endl;


Цитата:
Hello 0 and 0

Сообщить модератору | | IP: Записан
Сообщение: 169131

Старое сообщение 01-12-2017 10:16
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


nemyax
В релизе компилил?

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 169132

Старое сообщение 01-12-2017 10:21
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 2014

Рейтинг



Хуже, через браузер =)
https://www.tutorialspoint.com/compile_cpp_online.php
Но там, надо думать, гецеце и дебаг.

Сообщить модератору | | IP: Записан
Сообщение: 169133

Старое сообщение 01-12-2017 10:24
- За что?
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1484
Возраст: 32

Рейтинг



в дебаг нули, в релизе может быть мусор

__________________
vk.com/skullcapstudios

Сообщить модератору | | IP: Записан
Сообщение: 169512

Старое сообщение 10-12-2017 16:20
- За что?
ComradeAndrew
C++

Дата регистрации: Aug 2014
Проживает: (void)
Сообщений: 493
Возраст: 21

Рейтинг



Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

Сообщить модератору | | IP: Записан
Сообщение: 169668

Старое сообщение 13-12-2017 04:54
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


ComradeAndrew
В статье по ссылке всё очень хорошо объясняется.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 169669

Старое сообщение 13-12-2017 05:18
-
ComradeAndrew
C++

Дата регистрации: Aug 2014
Проживает: (void)
Сообщений: 493
Возраст: 21

Рейтинг



Да, вроде не плохо объяснено.
Если я правильно понял определения, то в baz

C++ Source Code:
struct baz
{
baz() {}
int z;
};


конструктор тоже user-provided, как и bar, то есть по стандарту поведение у них одинаковое (по крайней мере у меня это воспроизводится одинаково). Значит ли, что эти определения конструктора одинаковы?

Сообщить модератору | | IP: Записан
Сообщение: 169676

Старое сообщение 13-12-2017 07:08
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


ComradeAndrew
Конструктор baz явно указывает, что инициализировать z не нужно. Поэтому нет, нельзя сказать, что определения одинаковы.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 169680

Старое сообщение 13-12-2017 08:00
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


Не подводный камень, конечно, но забавно.
Знаете ли вы, что вот эта конструкция - совершенно легальная в С++, и несёт в себе конкретный смысл?

C++ Source Code:
[](){}

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 171980

Старое сообщение 24-03-2018 05:27
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 2014

Рейтинг



Указазель на пустую функцию?

Сообщить модератору | | IP: Записан
Сообщение: 171981

Старое сообщение 24-03-2018 06:55
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


nemyax
Не совсем. Это пустая лямбда. Первые скобки - пустой список захвата. Вторые - пустой список аргументов. Третьи - пустое тело.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 171982

Старое сообщение 24-03-2018 07:01
-
 ~ X ~
offline

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 3209
Нанёс повреждений: 0 ед.

Рейтинг



Награды
 
[1 награда]


Ага, лямбды. Которые только в новых плюсах и которые используют полтора человека...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Связь со мной здесь: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 171997

Старое сообщение 26-03-2018 10:01
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28068
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


~ X ~
Дык они уже давно появились, ещё в С++11.

Цитата:
~ X ~ писал:
которые используют полтора человека

Ну так они удобнее, чем по старинке отдельные функции или локальные классы-функторы.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 172000

Старое сообщение 26-03-2018 10:09
-
ComradeAndrew
C++

Дата регистрации: Aug 2014
Проживает: (void)
Сообщений: 493
Возраст: 21

Рейтинг



Цитата:
~ X ~ писал:
Ага, лямбды. Которые только в новых плюсах и которые используют полтора человека...

Какое интересное у людей представление о плюсах.

Сообщить модератору | | IP: Записан
Сообщение: 172002

Старое сообщение 26-03-2018 14:54
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 21:09. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > И снова о подводных камнях С++
Скандалы, интриги, расследования
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2018

Рейтинг@Mail.ru