gpt4 book ai didi

c++ - 什么是未知大小的 make_shared?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:09 27 4
gpt4 key购买 nike

this回答 T.C.州

boost::make_shared etc. support array types - either one of unknown size, or one of fixed size

boost::shared_ptr<int[]> sh_arr2 = boost::make_shared<int[]>(30);
boost::shared_ptr<int[30]> sh_arr3 = boost::make_shared<int[30]>();

首先,make_shared 如何支持未知大小的数组类型?我认为数组大小是必需的。

其次,sh_arr2和sh_arr3有什么区别?两者似乎都在创建一个 int 大小为 30 的数组。

最佳答案

这个例子不是很好。通过一个未知大小的数组,他们大概意味着它可以通过以下方式调用:

int arr2_size = 30;
boost::shared_ptr<int[]> sh_arr2 = boost::make_shared<int[]>(arr2_size);

由于 arr2_size 可以动态定义,因此可以将其视为“未知”。

其次,它们都创建了一个大小为 30 的数组,但是 sh_arr3 包含类型本身的大小,这将允许编译器在访问超出范围时发出警告。没有明确大小的类型将无法检测到这些情况。

关于c++ - 什么是未知大小的 make_shared?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41720531/

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