Я только что понял, что даже не могу определить один вариант использования ссылочного элемента в C++. Скажем, если я определю следующий класс:Когда использовать ссылочный элемент?
class Book {
public:
Book(const Author& author) : author(author) {}
private:
const Author &author;
}
Как я мог его использовать? Если я прохожу new
ред Author
к нему:
Book book(*(new Author()));
Не это утечка памяти? Когда выйдет Author
?
Позвольте мне попробовать еще раз. Как насчет прохождения с ней локальной переменной:
Book macBook() {
Author author();
return Book(author);
}
Не вернули ли возвращенную книгу недопустимую ссылку?
Я не могу представить себе третий способ его использования. Итак, почему существует ссылочный член? Когда я должен его использовать?
EDIT: Я знаю, что есть share_ptr
. Но должен ли я ВСЕГДА предпочесть share_ptr
?
Вы можете инициировать ссылку на объект, независимо от того, как он распределен, если гарантировано, что он перейдет в ссылку, то есть экземпляр объекта, содержащего ссылку. – thokra