C++如何使用make_shared传参
时间: 2024-10-20 13:11:31 浏览: 28
c++智能指针介绍的PPT
在C++中,`std::make_shared`是一个工厂函数,用于创建并立即初始化共享所有权的对象。它能够自动管理内存,避免裸new带来的内存泄漏风险。以下是使用`std::make_shared`进行参数传递的方式:
1. 如果要创建的是基本类型(如整数或字符)的对象,你可以直接作为参数传递给`make_shared`,如下所示[^1]:
```cpp
Widget* w = new Widget(参数); // 替换成auto spw = std::make_shared<Widget>(参数);
```
2. 对于复杂类型的对象,比如字符串,`make_shared`可以接受构造函数参数列表,如下例子展示了如何为`string`对象指定长度和初始值:
```cpp
// 创建一个长度为10且初始值为'9'的字符串
shared_ptr<string> p1 = make_shared<string>(10, '9');
// 创建一个已有的字符串
shared_ptr<string> p2 = make_shared<string>("hello");
// 如果不需要立即初始化,可以传入空参数
shared_ptr<string> p3 = make_shared<string>();
```
记住,使用`make_shared`时,最后一个调用实际上是创建了一个空对象,因此如果你确实想创建一个未初始化的对象,应该明确地这样做,而不是让`make_shared`猜测。
阅读全文