相关疑难解决方法(0)

管理单例析构函数

以下小例子实现了我多次见过的单例模式:

#include <iostream>

class SingletonTest {
private:
  SingletonTest() {}
  static SingletonTest *instance;
  ~SingletonTest() {
    std::cout << "Destructing!!" << std::endl;
  }

public:
  static SingletonTest *get_instance()  {
    if(!instance) instance = new SingletonTest;
    return instance;
  }
};

SingletonTest *SingletonTest::instance = 0;

int main(int argc, char *argv[]) {
  SingletonTest *s = SingletonTest::get_instance();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的主要问题是我的单身人士的析构函数从未被调用过.

我可以改为instance(c ++ 0x?)shared_ptr,这很好用 - 除了它意味着我的析构函数必须公开.

我可以添加一个静态的'清理'方法,但这会打开用户错误的可能性(即忘记调用它).面对(未处理的)例外,它也不允许适当的清理.

是否存在允许延迟实例化的常见策略/模式,"自动"调用我的析构函数,并且仍然允许我将析构函数保密?

c++ c++11

6
推荐指数
1
解决办法
8936
查看次数

标签 统计

c++ ×1

c++11 ×1