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++»