1、在class_test.h中定义类
在头文件class_test.h中定义类ClassTest,声明静态成员函数functest(),函数返回值为指向ClassTest类的指针。
class ClassTest
{
public:
static ClassTest * getInstance();
void fun();
}
2、在class_test.cpp中
在class_test.cpp中实例化ClassTest类。
如何实例化?
static成员和成员函数不属于对象,它是所有类对象共享一份,所以static成员和成员函数必须要在类外进行初始化!
ClassTest * ClassTest::getInstance()
{
static ClassTest sVar;
return &sVar;
}
void ClassTest::fun()
{
cout<<"ClassTest fun()"<<endl
}
int main()
{
ClassTest classObj;
// method1 to access member
ClassTest::getInstance()->fun(); // first
ClassTest::getInstance()->fun(); // second
//...
// method2 to access member
classObj.fun();
return 0;
}
总结:
functest()里的static局部变量sVar保证在多次通过ClassTest::getInstance()调用类其他成员函数时,类只被实例化一次,从而可以实现SingletonInstance(单一实例)。
注意:
但是通过类对象classObj去访问类成员时,就不是SingletonInstance。(只是注明一下SingletonInstance的用法,实际应用中通过method1来实现即可)
之前的博客中有介绍定义自身类型的成员的情况,注意区分不同情况。本类指针是可以的,但是本类成员不可以。https://blog.csdn.net/mengshushu90/article/details/102730730
————————————————
版权声明:本文为CSDN博主「不想打酱油的程序媛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mengshushu90/article/details/102806698