gpt4 book ai didi

c++ - 如何在重载的新运算符中使用新运算符?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:29 24 4
gpt4 key购买 nike

我正在尝试了解新的运算符重载,同时我对此深感困惑,我的问题是?

  1. 我如何在全局和本地重载的 new 运算符中使用 new 运算符。

关于全局过载,我找到了这个链接 How do I call the original "operator new" if I have overloaded it? ,但是我的本地重载新运算符呢?如果有人澄清我的问题,那对我来说也很有帮助。

除此之外,我还需要知道哪种方法是在本地或全局重载 new 运算符的最佳方式(可能取决于我的设计),我仍然需要了解最佳设计和性能目的。提前谢谢

最佳答案

http://en.cppreference.com/w/cpp/memory/new/operator_new - 有例子和解释。

例如:

#include <stdexcept>
#include <iostream>
struct X {
X() { throw std::runtime_error(""); }
// custom placement new
static void* operator new(std::size_t sz, bool b) {
std::cout << "custom placement new called, b = " << b << '\n';
return ::operator new(sz);
}
// custom placement delete
static void operator delete(void* ptr, bool b)
{
std::cout << "custom placement delete called, b = " << b << '\n';
::operator delete(ptr);
}
};
int main() {
try {
X* p1 = new (true) X;
} catch(const std::exception&) { }
}

关于c++ - 如何在重载的新运算符中使用新运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com