c – 你能禁止本地实例化吗?
发布时间:2020-12-16 10:36:47 所属栏目:百科 来源:网络整理
导读:我有一个自动过程监控的辅助类,因为它有点像“一次又一次忘掉”的机制,一个很大的缺陷就是你可以像这样使用它: MyClass c(process); 但是当c超出范围时,内部的线程停止,显然没有通知从它出来. 你应该怎么做是这样的: MyClass *c=new MyClass(process); 并
我有一个自动过程监控的辅助类,因为它有点像“一次又一次忘掉”的机制,一个很大的缺陷就是你可以像这样使用它:
但是当c超出范围时,内部的线程停止,显然没有通知从它出来. 你应该怎么做是这样的:
并自己处理一生. 是否有一种简单,好的方法,禁止本地实例化,只允许在c中使用“new”? 干杯! Valmond 解决方法
您可以将类的析构函数设置为private(并为释放定义替代成员函数).这禁止任何类的直接堆栈实例化,只允许堆(新)实例化.
注意:这比将构造函数设置为私有更好,因为仍然可以直接创建对象而不是通过函数创建对象.此外,只有一个析构函数需要私有化,但可能有许多构造函数. 要执行删除,您可以实现以下内容: struct MyStruct { void free() { delete this; } private: ~MyStruct() {}; }; int main() { MyStruct* s = new MyStruct; s->free(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xml中用fragment出现Error inflating class fragment的问题
- ruby-on-rails – Rails的concat方法和带有do … end的块不
- ruby-on-rails-4 – 在发送rails 4之前保存每封电子邮件
- C++ array(STL array)的用法及初始化
- c# – 即使新旧索引相同,是否可以启动ComboBox SelectedInd
- Swift与Objective-C的兼容“黑魔法”:@objc和Dynamic
- c# – 如何在tabcontrol/tabpages中添加垂直滚动条
- 第二章 ? 汇总和聚合数据(二)
- c# – 使用我的UserId Guid作为我的电子邮件确认链接是否安
- Oauth2在Flutter app中流动