-1
今天被告知這是一種「製造類似構造函數的巧妙方式」,但它「縫製了破壞的種子」,即使它有效。我一直在尋找,我似乎無法弄清楚爲什麼。謝謝。返回參考指針類型的函數
Person* makePerson(std::string name, std::int num) {
Person p(name, num);
return &p;
}
今天被告知這是一種「製造類似構造函數的巧妙方式」,但它「縫製了破壞的種子」,即使它有效。我一直在尋找,我似乎無法弄清楚爲什麼。謝謝。返回參考指針類型的函數
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);
}
P.S:使用int
不std::int
。