Std::shared_ptr const против неконстантного, экземпляр против ссылки в конструктореC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std::shared_ptr const против неконстантного, экземпляр против ссылки в конструкторе

Сообщение Anonymous »

Рассмотрите возможность передачи общего указателя const std::shared_ptr в вектор следующего класса.

Код: Выделить всё

struct MyClass {
explicit MyCLass(const std::shared_ptr & input) : obj(input) {}
const std::shared_ptr & obj;
};
obj фактически будет указывать на временный экземпляр std::shared_ptr, созданный в стеке, с совершенно новым блоком управления, созданным в куче, даже если конструктор объявлен явным.
Однако, если указанное выше объявление переменной-члена класса obj будет изменено на const std::shared_ptr obj он может повторно использовать исходный блок управления входным общим указателем.
Учитывая, что конструктор легко объявляется явным, какой механизм вызывает такое различное поведение?
Пожалуйста, не спрашивайте меня, зачем нужна ссылка наshared_ptr — я знаю, что делаю, и это делается не просто так.
Спасибо. заранее.

Подробнее здесь: https://stackoverflow.com/questions/797 ... onstructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»