C++类中声明一个函数返回值为指向本类的指针的static成员函数——实现Singleton Instance

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

猜你喜欢

转载自blog.csdn.net/modi000/article/details/125160085