5

是否可以创建一个可以只构建一次的类?如果您尝试创建它的其他实例,则会发生编译时错误。

4

3 回答 3

6

实例化是动态的,在运行时。编译错误发生在编译时。所以答案是否定的,在任何第二次实例化时都不可能出现编译错误。

但是,您可以使用单例,但要非常仔细地考虑它是​​否真的需要。

于 2012-04-28T08:36:34.450 回答
1

只有一个实例的类称为单例类,

有很多方法可以做到这一点。最简单的如下图

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
    };
于 2012-04-28T08:36:07.420 回答
0

为什么编译错误?我认为你只需要实现单例设计模式。看这里

于 2012-04-28T08:35:09.623 回答