C++11 从指针类型的函数返回引用

C++11 从指针类型的函数返回引用,c++11,pointers,reference,C++11,Pointers,Reference,今天有人告诉我们,这是一种“制作类似构造器的东西的聪明方法”,但它“缝下了毁灭的种子”,即使它是有效的。我一直在寻找,但我似乎不知道为什么。谢谢 Person* makePerson(std::string name, std::int num) { Person p(name, num); return &p; } 当函数返回时,您将返回一个指向其生存期已过的变量的指针。这是无用的,将导致未定义的行为 你想要这样的东西: std::unique_ptr<Pers

今天有人告诉我们,这是一种“制作类似构造器的东西的聪明方法”,但它“缝下了毁灭的种子”,即使它是有效的。我一直在寻找,但我似乎不知道为什么。谢谢

Person* makePerson(std::string name, std::int num) {
    Person p(name, num);
    return &p;
}

当函数返回时,您将返回一个指向其生存期已过的变量的指针。这是无用的,将导致未定义的行为

你想要这样的东西:

std::unique_ptr<Person> makePerson(std::string name, std::int num) {
    std::unique_ptr<Person> p(new Person(name, num));
    return std::move(p);
}
std::unique\u ptr makePerson(std::string name,std::int num){
std::unique_ptr p(新人(姓名、数字));
返回std::move(p);
}
注意:使用
int
而不是
std::int