GetStudent()関数がStudentの一意のインスタンスを返すと予想しました。私が期待したように、その関数はStudentクラスの一意のインスタンスを返します。 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()'のどこかに別の '学生 'を作成していませんか? – lapk
コードを追加しました返されたStudentオブジェクトへのポインタをどのようにチェックしましたか、いくつかの一時オブジェクトがコンストラクタを複数回呼び出す原因と思われます。 – marcinj
luskan // int adrr =&GetSudent() – webnoon