#define SINGLETON_CLASS_NO_DEF_CONSTRUCT_BODY(class_name)\
    
private:\
    class_name();\
    class_name(
const class_name&);\
    class_name 
& operator = (const class_name &);\
    
public:\
    
static class_name & Instance()\
        {\
        
static class_name one;\
        
return one;\
        }

#define SINGLETON_CLASS(class_name)\
    
private:\
    class_name(){}\
    class_name(
const class_name&);\
    class_name 
& operator = (const class_name &);\
    
public:\
    
static class_name & Instance()\
        {\
        
static class_name one;\
        
return one;\
        }

 

 

两个宏的区别仅在于是否实现 默认的无参构造函数。使用例子:

// HostBasicInformation.h
class HostBasicInformation
{
	SINGLETON_CLASS_NO_DEF_CONSTRUCT_BODY(HostBasicInformation)

public:
	virtual ~HostBasicInformation();
	
	std::string GetInstallCode();
	
};

// HostBasicInformation.cpp

// 若使用SINGLETON_CLASS ,则不需要自己定义无参构造函数
HostBasicInformation::HostBasicInformation(){

}



HostBasicInformation::~HostBasicInformation(){

}

std::string HostBasicInformation::GetInstallCode()
{
	return "";
}

这种宏的方式,主要优点在于:能严格限制此类的使用方式,也就是只能当做单例来使用。

std::string str_installCode = HostBasicInformation::Instance().GetInstallCode();

 

相关文章:

  • 2022-12-23
  • 2021-08-14
  • 2021-10-28
  • 2021-07-12
  • 2021-08-26
  • 2023-02-10
猜你喜欢
  • 2021-09-23
  • 2021-08-31
  • 2022-01-26
  • 2021-09-26
  • 2021-09-26
  • 2021-05-20
相关资源
相似解决方案