昨天在看前些天写的代码,发现一个错误。
#include <iostream>
using namespace std;
class singleton
{
public:
static singleton* sharedInstance()
{
if (m_ptr==nullptr)
{
m_ptr=new singleton();
//这里没有返回值
}
else
{
return m_ptr;
}
}
void show(){cout<<"singleton is ok"<<endl;};
private:
singleton()
{
};
static singleton* m_ptr;
};
singleton* singleton::m_ptr=nullptr;
int main()
{
singleton* p=singleton::sharedInstance();
p->show();
getchar();
return 0;
}
问题在:
singleton* p=singleton::sharedInstance();
程序运行没有问题,但是事实上
static singleton* sharedInstance()
{
if (m_ptr==nullptr)
{
m_ptr=new singleton();
//这里没有返回值
}
else
{
return m_ptr;
}
}<