C++ 单类实例C++;
是否可以创建一个只需构造一次的类?如果您试图创建它的其他实例,则会发生编译时错误。为什么会发生编译错误?我认为,您只需要实现单例设计模式。C++ 单类实例C++;,c++,class,C++,Class,是否可以创建一个只需构造一次的类?如果您试图创建它的其他实例,则会发生编译时错误。为什么会发生编译错误?我认为,您只需要实现单例设计模式。 看只有一个实例的类称为singleton类 有很多方法可以做到这一点。最简单的示例如下所示 class MySingleton { public: static MySingleton& Instance() { static MySingleton singleton; ret
看只有一个实例的类称为singleton类 有很多方法可以做到这一点。最简单的示例如下所示
class MySingleton
{
public:
static MySingleton& Instance()
{
static MySingleton singleton;
return singleton;
}
// Other non-static member functions
private:
MySingleton() {}; // Private constructor
MySingleton(const MySingleton&); // Prevent copy-construction
MySingleton& operator=(const MySingleton&); // Prevent assignment
};
实例化在运行时是动态的。编译错误发生在编译时。所以答案是否定的,在任何第二次实例化中都不可能得到编译错误
<>你可以使用一个单体,但是要非常仔细地考虑它是否真的需要。你所寻找的被称为单体。我必须敦促你非常认真地考虑单身人士是否真的对你的申请有意义。99%的情况下,不应该使用单例。但是,对于所有创建查询,单例只会返回相同的实例。这可能比接收exception.AFAIK更有用,因为没有选项使此类具有编译时错误。但是有一种叫做“Singleton”的流行模式,用于生成阻止实例化的类。你可以很容易地在谷歌上搜索成吨的例子。@rafdp:你为什么想要这个?这闻起来像是一个.rafdp询问的编译时错误示例,这不是一个答案。@Yarg如果您试图创建多个MySingleton类实例,那么它将给出编译错误,这就是rafdp询问的。静态MySingleton&OtherInstance()如何{static MySingleton anotherSingleton;返回anotherSingleton;}@Yarg如果你是说可以修改类定义来创建另一个实例,那么当然。但我认为OP所说的是这样一个场景,即类的设计是为了让类的用户得到编译错误。我认为假设这些用户不会修改类来绕过限制是合理的@Jaguar:代码正在返回引用。因此无法证明编译时错误。
MySingleton&a=MySingleton::Instance();MySingleton&b=MySingleton::Instance();
a和b都将引用单个静态实例singleton