Pho*_*ong 1 c++ singleton coding-style
我确实在网上看到了一些实现单例类的模式如下:
class singleton {
public:
int a;
void print()
{
std::cout << a << std::endl;
}
} singleton;
int main()
{
// singleton b; COMPILATION ERROR
singleton.a = 3;
singleton.print();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它确实在GCC上编译,但我觉得将实例命名为类的名称并不是一种正确的编码方式.
class singleton ss;
Run Code Online (Sandbox Code Playgroud)
你可以构造不止一个,所以这不是一个单身人士.隐藏的名字可以说是邪恶的.单身人员很糟糕,所以不要使用它们.
关于你真正要问的两个问题,
是的,C++的概念是在同一范围内共存的不同类型的名称,如C和
是的,当包含适当的标题时,代码可以使用MinGW g ++ 4.4.1,Visual C++ 10.0和Comeau Online 4.3.10.1进行编译.
当您对某些代码段是否符合标准时存在疑问时,实际上只需将其提交给Comeau Online.
然而,代码在技术上是好的并不意味着它没关系...... :-)
Singleton用于描述与全局变量不同的东西.你拥有的是一个全局变量.因此,它不是单身人士.
单身人士的两个基本属性是
有全球唯一的实例,和
该实例是按需创建的.
通常人们想要类似于全局变量但更受控制的东西.一个人想要一个更受控制的实例化顺序,懒惰的创建有助于此.并且想要限制允许的实例数量,通常是
后者是使用单例的一个常见原因,例如维基百科关于单身人士的文章将单例描述为"将类的实例化限制为一个对象".但这是一种简单化的观点.有时需要一个特定数量的实例,作为单身人士.例如,对于Python来说,将Python False和True值描述为该bool类型的单例并不罕见.有时人们需要单身(或单身),同时仍允许任意实例化.
在C++中,实现单例的一种特别简单的方法称为Meyers的Singleton.实际上,单例实例是函数中的一个静态变量,它提供对它的访问.这通常与禁止类的一般实例化相结合,例如通过构造函数或所有构造函数private,以及单例访问函数是static成员函数.
干杯&hth.,