void指针作为函数形参的用法 当智能指针作为函数形参时,可以使用以下示例来说明不同的用法: 1. 使用 `std::unique_ptr`: “`cpp void ProcessData(std::unique_ptr<int> data) { // 操作 data 指向的资源 // … } int main() { std::unique_ptr<int> ptr = std::make_unique<int>(42); ProcessData(std::move(ptr)); // 传递独占所有权 // 此时 ptr 不再拥有资源 } “` 2. 使用 `const std::unique_ptr&`: “`cpp void PrintData(const std::unique_ptr<int>& data) { // 读取 data 指向的资源 // … } int main() { std::unique_ptr<int> ptr = std::make_unique<int>(42); PrintData(ptr); // 传递常引用,避免拷贝构造 } “` 3. 使用 `std::shared_ptr`: “`cpp void ProcessData(std::shared_ptr<int> data) { // 操作 data 指向的资源 // … } int main() { std::shared_ptr<int> ptr = std::make_shared<int>(42); ProcessData(ptr); // 传递共享所有权 // ptr 仍然拥有资源,直到最后一个引用销毁 } “` 4. 使用裸指针和 `const MyClass&`: “`cpp void PrintData(const MyClass& obj) { // 使用 obj 进行操作,不涉及智能指针的所有权管理 // … } int main() { std::shared_ptr<MyClass> ptr = std::make_shared<MyClass>(args); PrintData(*ptr); // 通过解引用传递对象的引用 } “` 这些示例展示了使用不同类型的智能指针作为函数形参的场景,你可以根据具体的需求选择适合的方式来传递和管理资源的所有权。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/34760.html