
Aldar
27.05.2016
21:17:54
B* b = new B();
A* a = b;
delete a;

Andrei
27.05.2016
21:18:06
Здесь всё ок будет.

Alex Фэils?︙
27.05.2016
21:18:10
Кстати. Тут как раз в чате было обсуждение слайсингв. Но никто не знал, а я подзабыл. Поэтому пока помолчу)

Aldar
27.05.2016
21:18:22
если деструктор у A виртуальный

Google

Andrei
27.05.2016
21:18:33
Пофиг на деструктор

Aldar
27.05.2016
21:18:35
то ресурсы выделенные в B будут корректно освобождены

Andrei
27.05.2016
21:18:38
просто ок всё будет.

arisu
27.05.2016
21:18:49
угу

Aldar
27.05.2016
21:19:01
если деструктор не виртуальный, то ресурсы в B могут быть не освобождены

Alex Фэils?︙
27.05.2016
21:19:14
так и будет, если мы delete a;
Если там будут выделения памяти

Andrei
27.05.2016
21:19:35
воу-воу-воу
полегче
всего неавсего не будет вызван деструктор B

Alex Фэils?︙
27.05.2016
21:19:51

Andrei
27.05.2016
21:20:02
деструкторы его полей БУДУТ вызваны

Google

Alex Фэils?︙
27.05.2016
21:20:06
Я сегодня плохо излагаю свои мысли

arisu
27.05.2016
21:20:10
эээээ.
а если у В есть поля.
это же тоже память

Alex Фэils?︙
27.05.2016
21:20:22
поэтому smart pointers

Aldar
27.05.2016
21:22:10
Можно ли вызывать из конструктора виртуальные функции?

arisu
27.05.2016
21:22:21
лучше не делать

Alex Фэils?︙
27.05.2016
21:22:25
Лучше не

Aldar
27.05.2016
21:22:28
почему?)

arisu
27.05.2016
21:22:36
vtable не инициализирована

Alex Фэils?︙
27.05.2016
21:22:37
Там же втбл в неопределенном состоянии

arisu
27.05.2016
21:23:04
давайте чонить посложнее майерса
все это было у майерса

Alex Фэils?︙
27.05.2016
21:23:12
Компиль те честно подставит call offset vtbl[0]
И - ой

Aldar
27.05.2016
21:24:03
что такое SFINAE?

Alex Фэils?︙
27.05.2016
21:24:44
Substitution Failure is not an error
Херь, когда компиль не смог подставить в шаблон

Google

Alex Фэils?︙
27.05.2016
21:25:22
И я ее не поняль до конца

Andrei
27.05.2016
21:25:26
странно.
Кажется я не прав.

Alex Фэils?︙
27.05.2016
21:26:51
Что где

Aldar
27.05.2016
21:26:58
template<class T>
class Base {
...
};
class Derived: public Base<Derived> {
...
};
Для чего это нужно бывает?

Alex Фэils?︙
27.05.2016
21:27:27

Сергей
27.05.2016
21:27:28
Ну

Alex Фэils?︙
27.05.2016
21:27:43
Позволяет внедрять зависимости через общиц интерфейс

Andrei
27.05.2016
21:27:46
стойте.
блин, это просто статический полиморфизм.
У нас тут ошибка.

Alex Фэils?︙
27.05.2016
21:28:04

Andrei
27.05.2016
21:28:19
Я не знаю почему, но отсутсвие виртуального деструктора делает какой-то дикий type-erasure
и деструкторы полей таки не вызываются.
Да, my bad
Забыл про последоватльеность.
Очень плохо.
http://ideone.com/9zjUOy

Aldar
27.05.2016
21:31:31
реализуйте библиотечную функцию remove_if

Google

Andrei
27.05.2016
21:32:06
где
CRTP, нужно в первейшую очередь для статического полиморфизма. Как раз когда мы не хотим иметь дело с виртуальными функциями
про депенденсу инжекшн это в яваконференции пожалуйста :D

Aldar
27.05.2016
21:33:20
можно ли инлайнить виртуальную функцию?
ладно пошёл эликсир потрогаю)

Andrei
27.05.2016
21:35:10
И разумеется их можно вызывать.

Aldar
27.05.2016
21:35:28
можно ли кидать исключения из деструктора?

Andrei
27.05.2016
21:35:44
И тоже можно.
другое дело, что в стандартной библиотеке деструкторы объявлены noexcept и ты просто на такой фокус получишь std::terminate

Aldar
27.05.2016
21:37:42
что такое POD и для чего он нужен?

Admin
ERROR: S client not available

Andrei
27.05.2016
21:38:11
либо double fault

Alex Фэils?︙
27.05.2016
21:38:26

Andrei
27.05.2016
21:38:29
Если это случилось внутри обработчика exception

Alex Фэils?︙
27.05.2016
21:38:37

Andrei
27.05.2016
21:38:44
Но кидать можно.
И про vtable в конструкторе тоже неправильный ответ :с

Alex Фэils?︙
27.05.2016
21:38:58
где
Это "где" я ткнул не туда?хотел на то, где ошибка

Andrei
27.05.2016
21:40:19
под это не объект си

Google

Alex Фэils?︙
27.05.2016
21:40:20

Andrei
27.05.2016
21:41:30
Не думаю что это UB
Просто вызовется неполиморфная версия.
Хотя так и можно спродюсировать pure virtual call

Alex Фэils?︙
27.05.2016
21:43:53

Andrei
27.05.2016
21:44:34
Нет.
бля
пиздец
у меня все расспыалось нахуй
ща
РРР

Alex Фэils?︙
27.05.2016
21:45:36

Andrei
27.05.2016
21:45:49
ТАк
Ппц
В общем.
В 11 плюсах
pod
это либо массив pod-ов, либо скалярный тип, либо пользовательский тип, rjnjhsq
которы

Aldar
27.05.2016
21:48:09
чем make_shared лучше чем обычное создание?

Andrei
27.05.2016
21:48:16
являетсся trivial type