如何只创建一个类的实例,并在不使用单例的情况下与所有标题和源文件共享该实例?你能提供一个简单的例子吗?
答案 0 :(得分:3)
你可以这样做:
class Sample
{
/*** your code **/
public:
Sample();
void DoWork();
int GetValue();
/*** other functions ***/
};
Sample & OneInstance()
{
static Sample instance;
return instance;
}
//Use OneInstance everywhere like this
OneInstance().DoWork();
注意Sample
不是单身人士,但您可以使用OneInstance()
功能,就好像它是Sample
的同一个实例,您可以在任何地方使用它!
您可以使用它来初始化一些全局变量,如下所示:
int g_SomeValue= OneInstance().GetValue();
使用static
的全局Sample
实例无法完成此操作。那是因为:
答案 1 :(得分:2)
答案 2 :(得分:1)
我建议不要在任何时候分享任何东西,因为共享会使并发变得困难。如果您不关心并发性,那么您应该将对象作为额外参数传递给函数。全球通常是一个坏主意,而单身人士通常只是带有华丽装扮的全球形。