#include <iostream>
#include <unistd.h>
using namespace std;
struct StaticMember
{
public:
int age = 6;
StaticMember()
{
std::cout << "StaticMember()" << std::endl;
}
~StaticMember()
{
std::cout << "~StaticMember()" << std::endl;
}
};
struct StaticMember2
{
StaticMember2()
{
std::cout << "StaticMember2()" << std::endl;
}
~StaticMember2()
{
std::cout << "~StaticMember2()" << std::endl;
}
};
struct PlainMember
{
PlainMember()
{
std::cout << "PlainMember()" << std::endl;
}
~PlainMember()
{
std::cout << "~PlainMember()" << std::endl;
}
};
struct PlainMember2
{
PlainMember2()
{
std::cout << "PlainMember2()" << std::endl;
}
~PlainMember2()
{
std::cout << "~PlainMember2()" << std::endl;
}
};
struct StaticMember3
{
StaticMember3()
{
std::cout << "StaticMember3()" << std::endl;
}
~StaticMember3()
{
std::cout << "~StaticMember3()" << std::endl;
}
};
class MyClass
{
public:
static MyClass *GetInstance()
{
static MyClass a;
return &a;
}
static StaticMember3*getStatic()
{
static StaticMember3 pl3;
return &pl3;
}
static void print()
{
getStatic();
std::cout << "/* message */" << std::endl;
}
private:
MyClass();
~MyClass();
public:
PlainMember2 plainMember2;
PlainMember plainMember;
static StaticMember2 staticMember2;
static StaticMember staticMember;
};
MyClass::MyClass()
{
std::cout << "MyClass()" << std::endl;
}
MyClass::~MyClass()
{
print();
std::cout << "~MyClass()" << std::endl;
std::cout << "~MyClass():~StaticMember(),age:" << staticMember.age << std::endl;
}
StaticMember MyClass::staticMember;
StaticMember2 MyClass::staticMember2;
int main(int argc, const char **argv)
{
// std::cout <<
MyClass::GetInstance()->staticMember.age ;
//<< std::endl;
//std::cout << MyClass::getStatic() << std::endl;
return 0;
}
备份地址: 【多个单例对象,析构顺序模拟】