2017-06-06 48 views
-1

今天被告知這是一種「製造類似構造函數的巧妙方式」,但它「縫製了破壞的種子」,即使它有效。我一直在尋找,我似乎無法弄清楚爲什麼。謝謝。返回參考指針類型的函數

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

回答

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:使用intstd::int