gpt4 book ai didi

C++11 unique_ptr 数组和构造函数参数

转载 作者:行者123 更新时间:2023-12-02 23:28:13 27 4
gpt4 key购买 nike

我有一个名为 Widget 的 C++ 类,我可以使用 C++11 智能指针数组工具来创建它们的动态数组,如下所示:

std::unique_ptr<Widget[]> widget(new Widget[number_of_widgets]);

现在,我已经更改了该对象,以便构造函数现在采用两个整数参数。是否仍然可以使用智能指针数组并调用参数化构造函数?

最佳答案

您可以,但前提是您知道在编译时构建的元素的确切数量:

const std::size_t number_of_widgets = 2;
std::unique_ptr<Widget[]> widget(new Widget[number_of_widgets]{Widget(1, 2), Widget(3, 4)});

Live demo

否则你不能。

但是,通常对数组使用智能指针并不是一个好的设计,特别是对于 unique_ptr ,其中一个简单的向量(或数组,或string) 最终会完成相同的工作。

引用斯科特·迈耶斯的话:

The existence of std::unique_ptr for arrays should be of only intellectual interest to you, because std::array, std::vector, and std::string are virtually always better data structure choices than raw arrays.

关于C++11 unique_ptr 数组和构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587657/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com