170 похожих чатов

При выходе из области видимости unique_ptr вызывает деструктор хранимого объекта?

24 ответов

23 просмотра

да

вызывается деструктор самого unique_ptr, который вызовет deleter, да

Ffff-Ffff Автор вопроса
Ilya Zviagin
да

а make_unique только вызывает конструктор объекта?

Ffff Ffff
а make_unique только вызывает конструктор объекта?

Ну не только, он же ещё динамически объект создаёт , выделяет память, а затем создаёт в этой памяти объект, вызывая конструктор

Ffff-Ffff Автор вопроса
Ilya Zviagin
Ну не только, он же ещё динамически объект создаёт...

auto unq = std::make_unique<SomeClass>(/* ctor args */); вот типовой пример использования с обычным классом, а как быть если я хочу использовать unique_ptr с классом-фабрикой других классов?

Ffff Ffff
auto unq = std::make_unique<SomeClass>(/* ctor arg...

Интерфейс у фабрики какой ?

Ffff Ffff
auto unq = std::make_unique<SomeClass>(/* ctor arg...

для начала, можно не использовать std::make_unique

Ffff-Ffff Автор вопроса
Ffff Ffff
пока не сделал)

Так делай тогда фабрику так, чтобы она уже возвращала unique_ptr или shared_ptr

Ilya Zviagin
Интерфейс у фабрики какой ?

а если бы фабрика давал объект по значению?

Ffff-Ffff Автор вопроса
Ilya Zviagin
Так делай тогда фабрику так, чтобы она уже возвращ...

а разницу возвращаемых объектов делать с помощью перегрузок?

Ffff-Ffff Автор вопроса
Ilya Zviagin
Так делай тогда фабрику так, чтобы она уже возвращ...

class PreprocessingFactory { public: PreprocessingFactory(); std::unique_ptr<SomeClass1> buildPreprocessing(int ); std::unique_ptr<SomeClass2> buildPreprocessing(cv::Mat); private: };

Ffff-Ffff Автор вопроса
Ilya Zviagin
Не понял.

имел ввиду сам метод создания объектов перегрузить несколько раз, сделал пример в коде

Ffff Ffff
class PreprocessingFactory { public: Preprocessing...

Пример странный, почему одинаковые методы ? buildPreprocessing - две штуки , почему ? Обычно методы называются по имени производимого продукта. buildProduct1, buildProduct2, buildHouse, buildCar и так далее. Тут я мысль не понял.

Ffff-Ffff Автор вопроса
Ilya Zviagin
Пример странный, почему одинаковые методы ? buildP...

методы одинаковые потому что в зависимости от железа будет использоваться один либо другой класс препроцессинга, при препроцессинге на cpu будет использоваться opencv а при препроцессинге на gpu будет использоваться npp, и я решил что бы не иметь зоопарк разных классов в разных местах лучше попробовать сделать фабрику с одним интерфейсом

Ffff Ffff
методы одинаковые потому что в зависимости от желе...

Так это должен быть один метод, а не два.

Ffff-Ffff Автор вопроса
Ilya Zviagin
Так это должен быть один метод, а не два.

перегрузки использовать плохо?

Ffff Ffff
перегрузки использовать плохо?

Нет, просто ты же фабрику пишешь, тут это против её логики

Ffff-Ffff Автор вопроса
Ilya Zviagin
Нет, просто ты же фабрику пишешь, тут это против е...

например я буду вызывать метод билдера объекта с разными аргументами в зависимости от железа, и он будет возвращать unique_ptr на разные объекты

Ffff-Ffff Автор вопроса
Ilya Zviagin
Нет, просто ты же фабрику пишешь, тут это против е...

каждый метод фабрики должен по задумке возвращать только объект одного класса?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта