void Print(const std::unique_ptr<MyClass>& obj);
时间: 2024-05-21 17:18:36 浏览: 239
这是一个函数声明,函数名为 `Print`,它接受一个类型为 `std::unique_ptr<MyClass>` 的参数 `obj`,该参数是一个指向 `MyClass` 类型对象的智能指针,表示该函数会打印出该对象的信息。由于传递智能指针时发生所有权转移,因此使用 `const` 限定符表示该函数不会修改智能指针所指向的对象。
相关问题
A. void Print(std::unique_ptr<MyClass> obj); B. void Print(const std::unique_ptr<MyClass>& obj); C. void Print(std::shared_ptr<MyClass> obj); D. void Print(const MyClass& obj);
A. `void Print(std::unique_ptr<MyClass> obj);`: 这个函数接受一个 `std::unique_ptr<MyClass>` 类型的参数 `obj`。这意味着在函数内部,`obj` 是独占指针,它拥有对 `MyClass` 对象的唯一所有权。当函数调用结束时,`obj` 将会被销毁并释放内存。
B. `void Print(const std::unique_ptr<MyClass>& obj);`: 这个函数接受一个指向 `std::unique_ptr<MyClass>` 类型的常引用 `obj`。通过使用常引用,函数可以避免对 `obj` 进行拷贝构造,同时保证对 `obj` 的访问是只读的。这种方式适用于不需要修改对象内容的情况。
C. `void Print(std::shared_ptr<MyClass> obj);`: 这个函数接受一个 `std::shared_ptr<MyClass>` 类型的参数 `obj`。`std::shared_ptr` 是一个引用计数智能指针,它可以被多个指针共享所有权。函数内部使用时,可以通过增加引用计数来保持对象的生命周期,并在引用计数为零时自动释放内存。
D. `void Print(const MyClass& obj);`: 这个函数接受一个指向 `MyClass` 类型的常引用 `obj`。通过使用常引用,函数可以避免对 `obj` 进行拷贝构造,同时保证对 `obj` 的访问是只读的。这种方式适用于不需要修改对象内容的情况,但是不涉及智能指针的所有权管理。
阅读全文