设计一个不能在外部环境创建该类的对象
解题思路:设计出一个单例模式.将构造函数设置成私有(private)或者保护(protected),这样就不能在外部环境中创建该类对象.只能从类内的成员方法进行创建;
单例模式: Singleton 模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。
//单例模式
class Singleton
{
int value;
private://protected
Singleton(int x = 0) :value(x) {}
Singleton(const Singleton&) = delete;
//c11要将自己写的拷贝构造delete
Singleton& operator=(const Singleton&)=delete;
public:
~Singleton() {}
static Singleton& getInstance()//静态函数
{
static Singleton s(10);//属于类域
//能调动类域中的所有类型成员
return s;
}
};
int main()
{
Singleton &s1 = Singleton::getInstance();//只能创建一个该类对象
s1.~Singleton();
}