是什么让放置新调用对象的构造函数?



从这里:

标准C++库提供 运算符 new 在标准标头中声明为:

void *operator new(std::size_t, void *p) throw ();

大多数C++实现将其定义为内联函数:

inline
void *operator new(std::size_t, void *p) throw () 
{
return p;
}

它只返回其第二个参数的值。它 完全忽略其第一个参数。异常规范 throw (( 表示不允许该函数传播任何 异常。

我知道放置 new 只是对operator new的重载,而且它在给定的内存地址上调用构造函数。

但是是什么让它被称为构造函数呢?它只需要一个指针并再次返回它。拿一个指针然后返回它有什么意义?为什么要将值传递给函数以将其收回?

但是

是什么让它被称为构造函数呢?

operator new的语义

有关详细信息,请阅读有关new表达式的C++11 标准 n3337,或该标准的更新变体。

当你定义一些operator new时,稍后使用它会调用构造函数。根据C++的定义。

我建议阅读一本好的C++编程书籍。

练习:使用malloc、放置new和一些throw表达式定义常用operator new(在class MyClass中(。

最新更新