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

时间:2017-06-06 04:07:15

标签: c++11 pointers reference

今天被告知这是一种聪明的方式来制作类似构造函数的东西"但它会缝制破坏的种子"即使它有效。我一直在寻找,我似乎无法弄清楚原因。感谢。

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

1 个答案:

答案 0 :(得分:0)

当函数返回时,您将返回指向生命周期结束的变量的指针。这没用,会导致未定义的行为。

你想要这样的东西:

std::unique_ptr<Person> makePerson(std::string name, std::int num) {
    std::unique_ptr<Person> p(new Person(name, num));
    return std::move(p);
}

P.S。:使用int而非std::int