代码1
静态类成员在调用静态成员函数时生成,通过静态成员函数返回静态类成员,实现整个类只有一个对象,此做法优点:编译时不为静态成员变量分配内存,节省内存空间。
#include<iostream>
class A {
public:
static A& getInstance();
void setUp();
private:
A() { std::cout << "A Construct functon" << std::endl; };
A(const A& rhs) {};
};
A& A::getInstance() {
static A a;
return a;
}
void A::setUp() {
std::cout << "program is set up" << std::endl;
}
int main() {
A::getInstance().setUp();
A::getInstance().setUp();
return 0;
}
- 运行窗口

代码2
在类的定义中引入静态成员指针变量,并设置为私有的成员变量,在成员函数中对静态成员指针变量进行判断,实现过程中类只有一个对象。
#include<iostream>
class A {
public:
static A* getInstance();
void setUp();
private:
A() { std::cout << "A Construct functon" << std::endl; };
A(const A& rhs) {};
static A* ptr;
};
A* A::getInstance() {
if (ptr == NULL) {
ptr = new A();
}
return ptr;
}
void A::setUp() {
std::cout << "program is set up" << std::endl;
}
A* A::ptr = NULL;
int main() {
A::getInstance()->setUp();
A::getInstance()->setUp();
return 0;
}
运行结果:

本文介绍了两种使用静态成员实现单例模式的方法。一种是通过静态成员函数返回静态类成员,另一种是利用静态成员指针变量确保类仅有一个实例。这两种方式都能有效地控制类实例的数量,节省内存资源。
1484

被折叠的 条评论
为什么被折叠?



