#include <iostream>
struct person_t{
int age;
};
person_t get_person1(){
person_t person;
person.age = 10;
return person;
}
person_t * get_person2(){
person_t *person = new person_t;
person->age = 20;
return person;
}
int main(){
person_t person1 = get_person1();
person_t *person2 = get_person2();
std::cout << person1.age << std::endl;
std::cout << person2->age << std::endl;
delete person2;
return 0;
}
Я хочу знать, что является самым безопасным способом вернуть структуру из функции.
Как и в ответах на вопросы в здесь и здесь, говорится, что когда вы создаете объект, как в get_person1()
, этот объект будет уничтожен после того, как он выйдет из области видимости.
Но когда я ищу "Как вернуть структуру из функции С++", он предлагает мне метод one (с get_person1()
) (Пример здесь). Но я думаю, что этот метод уничтожит объект после вызова функции, и я думаю, что метод 2 является самым безопасным.
Я здесь не прав...? Или любое мнение по этой теме..?
Спасибо!