懒汉模式:
#includeusing namespace std;class Single_Lazy{public: static Single_Lazy *getInstance() { if (s == nullptr) { s = new Single_Lazy(); } return s; }private: Single_Lazy() {} static Single_Lazy *s;};Single_Lazy *Single_Lazy:: s = nullptr;void test1(){ Single_Lazy *s1 = Single_Lazy::getInstance(); Single_Lazy *s3 = Single_Lazy::getInstance(); Single_Lazy *s2 = Single_Lazy::getInstance(); if (s1 == s3) { cout << "指向同一个对象" << endl; } else { cout << "指向不是同一个对象" << endl; }}int main(){ test1(); system("pause");}
懒汉模式是线程不安全的需要加锁
饿汉模式:
#includeusing namespace std;class Single_Hunger{public: static Single_Hunger *getInstance() { return s; }private: Single_Hunger() {} static Single_Hunger *s;};Single_Hunger *Single_Hunger::s = new Single_Hunger();void test1(){ Single_Hunger *s1 = Single_Hunger::getInstance(); Single_Hunger *s2 = Single_Hunger::getInstance(); if (s1 == s2) { cout << "指向同一个对象" << endl; } else { cout << "指向不是同一个对象" << endl; }}int main(){ test1(); system("pause");}