我想知道的是,在传递它们、内存管理和在实践中使用它们方面,按值返回 aCat
实际上与返回a 有何不同。std::unique_ptr<Cat>
明智的内存管理,它们不一样吗?作为由值返回的对象和包装在 unique_ptr 中的对象,一旦超出范围,它们的析构函数就会被触发?
那么,您将如何比较两段代码:
Cat catFactory(string catName) {
return Cat(catName);
}
std::unique_ptr<Cat> catFactory(string catName) {
return std::unique_ptr(new Cat(catName));
}