コードにはかなりの量のコードを格納する静的クラス関数があります。このコードが最初に使用され、現在も使用されている場所では、クラスのインスタンスを作成できないため、静的です。この関数の機能は、クラスのインスタンスが既に作成されているコードベースの他の場所で必要になります。
とにかく、同じ関数の非静的バージョンと静的バージョンを作成しなくても、静的関数を使用してポーリングできるすべてのコードを収容する非静的関数を、クラス インスタンスを初期化できない場所で作成できます。他の場所で実際のインスタンスを使用して呼び出されます。
例えば
#include <iostream>
class Test
{
public:
Test(){};
~Test(){};
void nonStaticFunc(bool calledFromStatic);
static void staticFuncCallingNonStaticFunc();
};
void Test::nonStaticFunc(bool calledFromStatic)
{
std::cout << "Im a non-static func that will house all the code" << std::endl;
if(calledFromStatic)
// do blah
else
// do blah
}
void Test::staticFuncCallingNonStaticFunc()
{
std::cout << "Im a static func that calls the non static func that will house all `the code" << std::endl;
nonStaticFunc(true);
}
int main(int argc, char* argv[])
{
// In some case this could be called as this
Test::staticFuncCallingNonStaticFunc();
// in others it could be called as
Test test;
test.nonStaticFunc(false);
}
その呼び出しが静的であるかどうかによって、非静的関数内でコードがわずかに変更される可能性があるため、コードの他の場所で使用される非静的メンバーへのアクセスが必要になる場合があるため、静的関数を常に使用することはできません。ただし、ほとんどのコードは同じままです。乾杯