Luc*_*uca 4 stl smart-pointers c++11
我有一个名为Widget的C++类,我可以使用C++ 11智能指针数组工具来创建它们的动态数组,如下所示:
std::unique_ptr<Widget[]> widget(new Widget[number_of_widgets]);
Run Code Online (Sandbox Code Playgroud)
现在,我更改了对象,以便构造函数现在接受两个整数参数.是否仍然可以使用智能指针数组并调用参数化构造函数?
您可以但只有在编译时才知道要构建的元素的确切数量:
const std::size_t number_of_widgets = 2;
std::unique_ptr<Widget[]> widget(new Widget[number_of_widgets]{Widget(1, 2), Widget(3, 4)});
Run Code Online (Sandbox Code Playgroud)
否则你不能.
但是,通常使用智能指针进行数组设计并不是一个好的设计,尤其是unique_ptr在简单vector(array或者string)最终会完成相同工作的地方.
引用Scott Meyers:
的存在
std::unique_ptr对数组应该只有智慧感兴趣的是你的,因为std::array,std::vector和std::string几乎总是更好的数据结构的选择,要比原阵列.
| 归档时间: |
|
| 查看次数: |
784 次 |
| 最近记录: |