来自here:
标准C ++库提供了以下内容的放置形式 在标准标头中声明的新运算符为:
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
的重载,它还会在给定的内存地址上调用构造函数。
但是什么叫构造函数?它只需要一个指针并再次返回它。取一个指针然后返回它有什么意义?为什么将值传递给函数以取回它?
答案 0 :(得分:3)
但是什么叫它构造函数?
operator new
中的semantics 有关详细信息,阅读有关n3337的C ++ 11标准new
expressions 或该标准的更新版本。
定义operator new
时,以后使用它会调用构造函数。根据C ++的定义。
我建议读一本好书C++ programming book。
锻炼:使用malloc
,位置operator new
和一些{{3},在您的class MyClass
中定义通常 new
}。