C++中make_shared
时间: 2024-06-16 19:04:55 浏览: 98
在C++中,make_shared是一个函数模板,用于创建一个shared_ptr智能指针对象。它可以方便地将动态分配的内存与智能指针绑定在一起,从而实现自动内存管理。
make_shared函数模板的语法如下:
```cpp
template <typename T, typename... Args>
shared_ptr<T> make_shared(Args&&... args);
```
其中,T是指向对象的类型,Args是构造函数的参数类型。
使用make_shared函数可以更简洁地创建shared_ptr对象,而不需要显式地使用new操作符。它会自动分配内存并调用对象的构造函数来初始化。
下面是一个使用make_shared函数创建shared_ptr对象的示例:
```cpp
#include <memory>
class MyClass {
public:
MyClass(int value) : m_value(value) {
std::cout << "Constructor called" << std::endl;
}
~MyClass() {
std::cout << "Destructor called" << std::endl;
}
private:
int m_value;
};
int main() {
auto ptr = std::make_shared<MyClass>(10);
// 使用ptr指向的对象
return 0;
}
```
在上面的示例中,make_shared函数创建了一个shared_ptr对象ptr,并将其指向一个MyClass对象。当ptr超出作用域时,智能指针会自动释放内存,并调用MyClass对象的析构函数。
阅读全文