从这里:
标准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
中(。