姬長信(Redy)

c – 析构函数中的= delete如何阻止分配?


在此SO question中声明此构造可防止实例的堆栈分配.
class FS_Only {
    ~FS_Only() = delete;  // disallow stack allocation
};

我的问题是,它如何阻止分配?我理解,无法显式或隐式删除此实例.但我认为,这将分别导致内存泄漏或运行时错误.

编译器是否足够聪明以排除这种情况并引发编译器错误?还有为什么需要这个呢?