Безопасно ли возвращать локальный CStringW вызывающей стороне? - PullRequest
1 голос
/ 10 августа 2010

У меня есть функция, определенная локальной переменной, набранной в CStringW, безопасно ли возвращать этот объект вызывающей стороне по значению, а не по ссылке?

Ответы [ 2 ]

2 голосов
/ 10 августа 2010

Да, все должно быть в порядке.CString внутренне использует буфер с подсчетом ссылок и выполняет копирование при записи, поэтому при создании копии CString и последующем уничтожении исходного объекта все должно «просто работать».

1 голос
/ 10 августа 2010

Я полагаю, что CString из MFC, а не STL, поэтому вы можете изменить свои теги.

Если вы возвращаете локальную переменную из функции, ее можно безопасно вернуть по значению, но не безопасно вернуться по ссылке.Возвращение по значению эффективно копирует строку в вызывающую сторону.Возврат по ссылке дает вызывающей стороне ссылку на локальную переменную, которая уничтожается при возврате функции, поэтому вызывающая сторона никогда не может использовать ее, а возвращаемая ссылка всегда недействительна.

...