在下面的代码中,我试图通过使类名和对象名相同来为singleton
(即具有单个对象的类)服务。
下面的代码中是否有任何缺陷可用于singleton
类的目的?
#include <iostream>
using namespace std;
class singleton
{
private :
int val;
public :
void set(int a)
{
val=a;
}
int display()
{
return val;
}
} singleton;
int main()
{
singleton.set(5);
cout << "output a = " <<singleton.display()<< endl;
//singleton obj;//second object will not be allowed
return 0;
}
答案 0 :(得分:3)
您的类型不是单身,因为您可以为其创建任意数量的实例。例如,
auto cpy = singleton;
cpy.set(42);
assert(singleton.display() != cpy.display());
// let's make loads of copies!
std::vector<decltype(singleton)> v(100, cpy); // 100 "singletons"!
但不用担心,你很可能不需要单身人士。