在C++中,是否可以重载new操作符来分配类似2d数组的东西?

问题描述 投票:0回答:2

在C++中,是否可以在给定 "高度 "和 "宽度 "的情况下,重载全局new和全局delete操作符来分配和重新分配2d内存块?

c++ multidimensional-array operator-overloading new-operator delete-operator
2个回答
0
投票

是否可以在C++中重载new操作符来分配类似2d数组的东西?

可以。

但我可以得到一些代码示例吗?

例子:在给定 "高度 "和 "宽度 "的情况下

std::unique_ptr<int[][10]> arr {new int[n][10]};

用给定的 "高度 "和 "宽度"?

只有当内部维度在编译时是恒定的,只有外部维度可以是动态的。只有外部维度可以是动态的。

很容易在动态的单维平面数组和多维数组之间进行转换。


0
投票

不幸的是,全局new操作符只需要一个参数,所以你不能同时提供 "高度 "和 "宽度"。而且,全局newdelete操作符不仅会被你写的代码使用,也会被你使用的库使用,例如std::string,std::vector。所以,做这样的改变可能会引起恶劣的问题。

© www.soinside.com 2019 - 2024. All rights reserved.