我希望GetStudent()函數返回Student的唯一實例。正如我所料,該函數返回Student Class的唯一實例。我仔細檢查了GetStudent()函數返回的內存地址。但是很奇怪的是,每當我調用GetSutent()函數時,都會調用Student的構造函數。代碼如下所示。編程環境是VC6.0 & MFC項目。C++ -using文件範圍靜態函數
//someApp.h
Student& GetStudent();
//someApp.cpp
Student& GetStudent()
{
static Student _student;
return _student;
}
//client1Class.cpp
#include "someApp.h"
void CCliend1Class::DoSomething()
{
GetStudent().DoSomething();
}
//client2Class.cpp
#include "someApp.h"
void CClient2Class::DoSomething()
{
GetStudent().DoSomething();
}
你確定你沒有在'DoSomething()'的某處創建另一個'Student'嗎? – lapk 2011-12-30 00:39:10
添加代碼如何檢查指向返回的Student對象的指針,我懷疑某些臨時對象導致構造函數被多次調用。 – marcinj 2011-12-30 00:40:41
luskan // int adrr =&GetSudent() – webnoon 2011-12-30 00:50:12