今天被告知这是一种聪明的方式来制作类似构造函数的东西"但它会缝制破坏的种子"即使它有效。我一直在寻找,我似乎无法弄清楚原因。感谢。
Person* makePerson(std::string name, std::int num) {
Person p(name, num);
return &p;
}
答案 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
。