gpt4 book ai didi

c++ - Overloaded operator new 在内部是如何工作的?

转载 作者:行者123 更新时间:2023-11-28 05:52:57 25 4
gpt4 key购买 nike

如下例,重载的 operator new 返回空指针

void* Myclass::operator new(size_t size)
{
void *storage = malloc(size);
if(NULL == storage) {
throw "allocation fail : no free memory";
}
return storage;
}

但是我这样调用 MyClass *x = new MyClass;

所以问题是 new 运算符如何知道其左侧的指针类型。进行类型转换。

问题 2:如果我写 MyClass *ptr = new Derived(); 会发生什么?有必要在派生类和基类中都重载新运算符吗?

最佳答案

当您编写 new MyClass 时,编译器知道您正在分配 MyClass 的实例,并执行处理分配所需的任何操作,比如在类中查找重载的 new 运算符,然后进行“类型转换”。

并且在重载的运算符函数中,您知道它在分配 MyClass 对象时被调用。

关于c++ - Overloaded operator new 在内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34837716/

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