我正在尝试用c ++实现单例模式。
static class_test* getinstance()
{
static class_test single_obj;
return &single_obj;
}
如果我想创建单例对象,我将使用此方法。
class_test *c = class_test :: getinstance();
因此确保每次都保持单个对象。
但是在同一个程序中,我使用了以下语句
class_test test;
这似乎也有效。我认为这违反了单身人士模式。
我的理解是否正确?
或者单例模式的实现由程序员掌握?
答案 0 :(得分:4)
您应该将class_test::class_test()
声明为私有,以防止用户实例化新对象。
答案 1 :(得分:1)
这是你应该做的:
使class_test的所有构造函数都为private。这样,只有class_test :: getinstance(参见下一点)才能访问构造函数。
make getinstance,class_test的静态函数(因此它可以访问构造函数)
将析构函数设为公共(这是默认值,因此您不必真正做任何事情)
也就是说,你可能不应该在生产代码中使用单例,因为它们会在代码中引入使重构和松散耦合变得困难的地方。
请考虑使用依赖注入。