C++ make_shared使用
时间: 2023-09-16 14:13:58 浏览: 100
`std::make_shared` 是 C++11 标准库中的一个函数模板,用于在动态内存中创建对象并返回指向该对象的 `std::shared_ptr` 智能指针。使用 `std::make_shared` 的好处是可以避免手动管理内存,同时也可以提高性能。
`std::make_shared` 的语法如下:
```
template<class T, class... Args>
std::shared_ptr<T> make_shared(Args&&... args);
```
其中,`T` 是要创建的对象的类型,`Args...` 是传递给该类型构造函数的参数。返回一个指向 `T` 类型对象的 `std::shared_ptr` 智能指针。
下面是一个使用 `std::make_shared` 的例子:
```c++
#include <memory>
#include <iostream>
class MyClass {
public:
MyClass(int x) : x_(x) {}
void print() { std::cout << "x = " << x_ << std::endl; }
private:
int x_;
};
int main() {
// 创建 MyClass 对象,并返回指向该对象的 shared_ptr
std::shared_ptr<MyClass> ptr = std::make_shared<MyClass>(10);
ptr->print(); // 输出 x = 10
return 0;
}
```
在上面的例子中,我们使用 `std::make_shared` 创建了一个 `MyClass` 对象,并将其返回给 `std::shared_ptr` 智能指针 `ptr`。然后,我们通过 `ptr` 访问了 `MyClass` 对象的 `print()` 方法,输出了 `x = 10`。
阅读全文