@ProCxx

Страница 194 из 2477
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

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
деструкторы его полей БУДУТ вызваны
Но если new было, то хер вам?

поэтому 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
template<class T> class Base { ... }; class Derived: public Base<Derived> { ... }; Для чего это нужно бывает?
Это мой любимый хак, я его в первый раз написал, как шаблоны вкурил)

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

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

Andrei
27.05.2016
21:27:46
стойте.

блин, это просто статический полиморфизм.

У нас тут ошибка.

Andrei
27.05.2016
21:28:19
Я не знаю почему, но отсутсвие виртуального деструктора делает какой-то дикий type-erasure

и деструкторы полей таки не вызываются.

Да, my bad

Забыл про последоватльеность.

B* b = new B(); A* a = b; delete a;
Здесь действительно всё плохо, без виртуального деструктора A

Очень плохо.

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
Plain old data
Тупо типы из языка Си

Andrei
27.05.2016
21:38:44
Но кидать можно.

И про vtable в конструкторе тоже неправильный ответ :с

Alex Фэils?︙
27.05.2016
21:38:58
Тупо типы из языка Си
Без ctor, dtor, одна видимость

где
Это "где" я ткнул не туда?хотел на то, где ошибка

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

Google
Alex Фэils?︙
27.05.2016
21:40:20
Без ctor, dtor, одна видимость
Там еще что-то было, но я забыл

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

Страница 194 из 2477