instance.h
#ifndef INSTANCE_H
#define INSTANCE_H
#include
#include
class Instance01{
private:
class Garbo{
public:
~Garbo();
};
private:
Instance01(){std::cout << "Instance01 的构造函数" << std::endl;}
~Instance01(){std::cout << "Instance01 的析构函数" << std::endl;}
Instance01(const Instance01& instance) = delete;
Instance01& operator=(const Instance01& Instance) = delete;
public:
static Instance01* GetInstance();
/*
其他成员函数
*/
std::string GetName();
private:
static Instance01* instancePtr;
static Garbo garbo;
/*
其他成员变量
*/
std::string name = "I am Instance01";
};
instace.cpp
#include
#include "instance.h"
// 类的静态成员变量声明
Instance01* Instance01::instancePtr = new Instance01();
Instance01::Garbo Instance01::garbo;
// 内存回收
Instance01::Garbo::~Garbo(){
if(instancePtr != nullptr){
delete instancePtr;
instancePtr = nullptr;
}
}
// 获取实例地址
Instance01* Instance01::GetInstance(){
return instancePtr;
}
// 其他业务逻辑
std::string Instance01::GetName(){
return name;
}
instance.h
#ifndef INSTANCE_H
#define INSTANCE_H
#include
#include
class Instance02{
private:
Instance02(){std::cout << "Instance02 的构造函数" << std::endl;}
~Instance02(){std::cout << "Instance02 的析构函数" << std::endl;}
Instance02(const Instance02& instance) = delete;
Instance02& operator=(const Instance02& Instance) = delete;
public:
static Instance02* GetInstance();
/*
其他成员函数
*/
std::string GetName();
private:
// 静态成员,程序结束自动释放内存
static Instance02 instance;
/*
其他成员变量
*/
std::string name = "I am Instance02";
};
instace.cpp
#include
#include "instance.h"
// 类的静态成员变量声明
Instance02 Instance02::instance;
// 获取实例地址
Instance02* Instance02::GetInstance(){
return &instance;
}
// 其他业务逻辑
std::string Instance02::GetName(){
return name;
}
main.cpp
#include
#include "instance.h"
int main(void){
std::cout << Instance01::GetInstance()->GetName() << std::endl;
std::cout << Instance02::GetInstance()->GetName() << std::endl;
return 0;
}
结果
