gpt4 book ai didi

c++ - 仅在堆栈上构造的类;不带新的。 C++

转载 作者:可可西里 更新时间:2023-11-01 18:42:03 24 4
gpt4 key购买 nike

有没有办法创建类 Foo

这样我就可以:

Foo foo;

但不是

Foo* foo = new Foo(); 

?

我不希望人们能够在堆上分配 Foo 的拷贝。

谢谢!

编辑:抱歉,我在“仅堆栈,而非堆”上错了。我想说的是“不能用new运算符”。

最佳答案

不可能阻止在堆上创建对象。总有办法解决它。即使您设法为 Foo 隐藏 operator new,您也可以随时执行以下操作:

#include <new>

struct Foo {
int x;
private:
void* operator new (std::size_t size) throw (std::bad_alloc);
};

struct Bar
{
Foo foo;
};

int main()
{
Bar* bar = new Bar;
return 0;
}

嘿,转眼之间,堆上就有一个 Foo。

关于c++ - 仅在堆栈上构造的类;不带新的。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301839/

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