Login
C++ Frage zur Speicherverwaltung
634 просмотров
Перейти к просмотру всей ветки
in Antwort femidav 17.12.08 17:04, Zuletzt geändert 18.12.08 16:39 (evgher)
In Antwort auf:
А вот такого лучше не делать. Если getter отдаёт сишный стринг, то это вызывает неопределённость в вопросе владения оным. Клиент может засомневаться: надо ли мне его уничтожать, или не надо? В итоге кто-нибудь, когда-нибудь его освободит, и вы получите красивенький такой баг. Лучше было бы отдать константную ссылку: std::string const& Options::getActionField();
А вот такого лучше не делать. Если getter отдаёт сишный стринг, то это вызывает неопределённость в вопросе владения оным. Клиент может засомневаться: надо ли мне его уничтожать, или не надо? В итоге кто-нибудь, когда-нибудь его освободит, и вы получите красивенький такой баг. Лучше было бы отдать константную ссылку: std::string const& Options::getActionField();
Я думаю, что здесь вы не совсем правы.
ms_address_field является мембер-переменной - указателем.
Уничтожение оной будет предпринято только при вызове деструктора - до этого ничего
и не должно освобождаться. Константная ссылка имеет смысл если речь шла о
ссылке, которую - как вы уже правильно приметили - клиент в контексте программы мог бы (он не может (из-за приват)) внезапно освободить.