Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重载新建和删除,什么';是否使用新[]和删除[]?_C++_Operator Overloading - Fatal编程技术网

C++ 重载新建和删除,什么';是否使用新[]和删除[]?

C++ 重载新建和删除,什么';是否使用新[]和删除[]?,c++,operator-overloading,C++,Operator Overloading,一个非常简短的问题,但令人惊讶的是,我没有在网上找到任何东西: 我正在为一个类重载new和delete。我是否还需要重载new[]和delete[],或者它们会自动“重定向”到重载的new和delete?我假设您讨论的是特定于类的重载,而不是替换全局运算符new和delete(除非确实需要,否则应该避免) 无论如何,回答你的问题,不-它们不会自动重定向。您必须专门重载所需的运算符。new和new[]是两个不同的运算符。我假设您讨论的是特定于类的重载,而不是替换全局运算符new和delete(除非

一个非常简短的问题,但令人惊讶的是,我没有在网上找到任何东西:


我正在为一个类重载
new
delete
。我是否还需要重载
new[]
delete[]
,或者它们会自动“重定向”到重载的
new
delete

我假设您讨论的是特定于类的重载,而不是替换全局运算符new和delete(除非确实需要,否则应该避免)


无论如何,回答你的问题,不-它们不会自动重定向。您必须专门重载所需的运算符。new和new[]是两个不同的运算符。

我假设您讨论的是特定于类的重载,而不是替换全局运算符new和delete(除非确实需要,否则应该避免)


无论如何,回答你的问题,不-它们不会自动重定向。您必须专门重载所需的运算符。new和new[]是两个不同的操作员。

否它不会自动执行任何转发
operator new
operator new[]
执行不同的操作。

否它不会自动执行任何转发
operator new
operator new[]
做不同的事情。

你可以简单地测试一下……你可能不应该做这些事情。正确的分配方法是通过分配器,正确的方法是通过库(例如,代码>代码:STD::vector < /代码>)。根据Scott Meyers在他的有效C++书中所说,“如果你想控制每个数组的数组的内存分配,你需要实现运算符new的数组特定表兄弟,操作符new []。[…]如果您决定编写运算符new[],请记住,您所做的只是分配一块原始内存-您无法对数组中尚不存在的对象执行任何操作。事实上,您甚至无法计算数组中将包含多少对象。”但是,关于您的具体问题,我现在不确定如果你重载new但不重载new会发生什么情况[…@LightnessRacesinOrbit:你可以在某种程度上测试这一点。但经验告诉我们,即使这些问题乍一看就奏效,它们背后也可能有陷阱。@Michael:不要有一个全新的答案!如果您使用唯一指针,您可以编写自己的
分配\u unique
,或者使用一个。如果你使用共享指针,它们已经支持分配器了。你可以简单地测试一下……你可能不应该做这些事情。正确的分配方法是通过分配器,正确的方法是通过库(例如,代码>代码:STD::vector < /代码>)。根据Scott Meyers在他的有效C++书中所说,“如果你想控制每个数组的数组的内存分配,你需要实现运算符new的数组特定表兄弟,操作符new []。[…]如果您决定编写运算符new[],请记住,您所做的只是分配一块原始内存-您无法对数组中尚不存在的对象执行任何操作。事实上,您甚至无法计算数组中将包含多少对象。”但是,关于您的具体问题,我现在不确定如果你重载new但不重载new会发生什么情况[…@LightnessRacesinOrbit:你可以在某种程度上测试这一点。但经验告诉我们,即使这些问题乍一看就奏效,它们背后也可能有陷阱。@Michael:不要有一个全新的答案!如果您使用唯一指针,您可以编写自己的
分配\u unique
,或者使用一个。如果使用共享指针,则它们已经支持分配器。