Предположим, у меня есть структура, содержащая std :: string, например:
struct userdata{
int uid;
std::string username;
}
Нужно ли мне создавать копию ctor или что-то еще, чтобы вернуть его из функции или использовать в контейнере STL? Рассмотрим эту функцию:
userdata SomeClass::GetUserData(unsigned int uid)
{
//do error checking and other stuff...
//m_usermap is std::map<unsigned int, userdata>
return m_usermap[uid];
}
Когда я вставляю структуры пользовательских данных в std :: map, создается копия структуры, верно? Создается ли новая std :: string, используя значение поля username, или происходит какое-то побитовое копирование (это было бы плохо)? Точно так же, когда я возвращаю структуру userdata из метода GetUserData, имеет ли она независимую строку, содержащую имя пользователя, или мне нужно определить ctor копии и явно создать новую строку?