如何防止类被malloc化,只允许新的?

Zos*_*oso 1 c++ malloc new-operator

在某些情况下,我想强制调用构造函数,该构造函数在new中自动调用,而不是在malloc中调用(在这种情况下,我们必须使用placement new技术).有没有办法让类只适用于new而不是malloc?

编辑:编译时间限制将是更可取的(像往常一样,我猜).

Kon*_*lph 5

不可能.malloc从根本上来说是无类型的 - 它只是分配一个字节缓冲区,你无法阻止它,就像你不能阻止某人将无类型指针转换为你的类型的指针.

无论如何,不要试试!正如达米安康威(可能)所说,你的代码应该防范墨菲,而不是马基雅维利:防止用户犯下诚实的错误.但当他们故意决定搞乱这种类型系统时,他们就是独立的.你的问题根本就没有用例.不要浪费资源.