代码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;
}
运行结果: