Consider the following class:
struct S { ~S() = delete; };
简单来说,我不能像这样创建实例:S s{};
因为我无法销毁它们。
正如评论中提到的,我仍然可以通过这样做创建实例:S *s = new S;
但我也无法删除它。
因此,我认为删除析构函数的唯一用途是这样的:
struct S {
~S() = delete;
static void f() { }
};
int main() {
S::f();
}
也就是说,定义一个只暴露一堆静态函数并禁止尝试创建该类实例的类。
如果有的话,删除析构函数还有哪些其他用途?
S
的实例,只需使用new S
即可。 - apple appledestructor = delete;
的用途是什么。 - skypjack