草庐IT

Singleton

全部标签

c++ - 如何删除单例对象

假设这是一个单例模式的实现(当然我们应该避免单例:这只是个问题),我一直在考虑创建静态对象。它由new在堆上创建运营商,当然,但这是如何销毁的?在下面的例子中我们有一个泄漏,那么应该如何实现静态单例对象的删除?应该有please_delete()采用公共(public)接口(interface),因此可以调用myC->please_delete()还是有其他方法可以实现这一目标?classCC{public:staticCC*cObj(){if(c_ptr==NULL){c_ptr=newCC();returnc_ptr;}elsereturnc_ptr;}intgetValue(){

c++ - Factory 类的典型 C++ 实现是否存在缺陷?

我需要在C++中实现工厂类,但是当我思考这个问题时,我发现了一个我无法解决的大问题,我发现周围所有的工厂实现示例都存在相同的缺陷方法。可能是我错了,但请告诉我原因。所以这是简单的“典型”工厂实现,它允许我在不更改工厂类的情况下注册新对象。//fruit.hclassFruit{protected:intcount;public:Fruit(intcount):count(count){}virtualvoidshow()=0;};//factory.h/**singletonfactory*/classFactory{typedefFruit*(*FruitCreateFunction

c++ - 使用 std::unique_ptr 的具有私有(private)析构函数的单例

我在我的程序中创建了所有单例,并牢记该文档:http://erdani.com/publications/DDJ_Jul_Aug_2004_revised.pdf(如果有人想知道为什么单例,它们都是工厂,其中一些存储一些关于它们应该如何创建实例的全局设置)。他们每个人看起来都像这样:声明:classSingletonAndFactory{staticSingletonAndFactory*volatileinstance;public:staticSingletonAndFactory&getInstance();private:SingletonAndFactory();Single

c++ - 如何在单例中传递参数

我一直想知道如何将参数传递给单例构造函数。我已经知道如何做一个单例,但我一直很不幸地找到了一种方法来做它。这是我的代码(部分)。Questionnary*Questionnary::getInstance(){staticQuestionnary*questionnary=NULL;if(questionnary==NULL){cout提前致谢(顺便说一句,我知道单例如何以及为什么不好) 最佳答案 让我扩展MartinYork'sanswer为您的用例。我建议在这种特定情况下对参数使用指针,因为我们利用它的固有属性,它可以是“空的”

C++ 单例与静态方法

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:C++singletonvscompletelystaticobject你好,为什么我更喜欢单例而不是静态类方法。MoneyPrinter::addJob(PrinterJob&job);orMoneyPrinter::getInstance().addJob(PrinterJob&job);这只是风格问题吗?你用什么?为什么?附言。我知道sigletons默认情况下不是线程安全的(第一次初始化)。

c++ - C++ 中的全局变量

在一个有很多类的C++多线程应用程序中,我试图找出定义全局变量的方法是什么C风格,在任何一个源文件中将其定义为全局,在访问此变量的类中包含的header中将其定义为extern。编写一个Singleton类,其中包含这些全局变量并公开set/get方法以写入变量。与第一种方法相比,第二种方法可以通过锁集中控制多线程访问。还有更多更好的方法吗? 最佳答案 首先尽量避免使用全局变量。如果您只需要这样做(例如cin、cout和cerr就是这种情况),您的第二种方法绝对是最好的(和更自然)的方式。

c++ - 如何对 Singleton 类进行单元测试 - C++?

在C++中对单例模式进行单元测试的方法有哪些?(请举例说明) 最佳答案 把单例的实现做成一个单独的类,在外面做一个实现“单例”的包装器。这样您就可以尽可能多地测试实现(除了微不足道且不必要的单例行为。classSingletonImpl{public:intdoit(double,double);};classSingleton{public:Singleton&instance(){...}intdoit(doublea,doubleb){impl->doit(a,b);}...private:SingletonImplimpl;

c++ - 如何在单例模式中初始化类成员?

我有一个遵循单例方法的类,但是如果它的构造函数是私有(private)的,我应该在哪里初始化类成员?classMyClass{MyClass(){};//constructorisprivateMyClass(constMyClass&);MyClass&operator=(constMyClass&);public:staticMyClass&Instance(){staticMyClasssingleton;returnsingleton;}}; 最佳答案 您可以照常在构造函数中初始化类成员,甚至是私有(private)的。构造

c++ - 这个 Singleton 实现有什么问题?

想法是在程序结束时删除C++中的Singleton。我们在类里面学习了这种实现方法:classSingleton{private:staticSingleton*the_singleton;protected:Singleton(){staticKeeperkeeper(this);/*CONSTRUCTIONCODE*/}virtual~Singleton(){/*DESTRUCTIONCODE*/}public:classKeeper{private:Singleton*m_logger;public:Keeper(Singleton*logger):m_logger(logger

C++ 单例 undefined reference

我是C++的新手,正在尝试理解C++中的单例模式。myclass.h#ifndefMYCLASS_H#defineMYCLASS_HclassMyclass{public:staticMyclass*getInstance();private:Myclass(){}Myclass(Myclassconst&){}Myclass&operator=(Myclassconst&){}staticMyclass*m_instance;};#endif//MYCLASS_Hmyclass.cpp#include"myclass.h"Myclass*Myclass::getInstance(){