Yes, you can use static methods in constructors as these static methods do not need a pointer to the object (in construction).
Similarly, static methods can be used to create an instance of the same class (think of a factory method).
You did not specify the language, so I went with C++, but similar logic works in C# and should work in other languages as well. See the example below:
Foo.h
#pragma once
class Foo
{
private:
int value;
static void DoSomething();
public:
static Foo * CreateFoo();
Foo();
int GetValue();
};Foo.cpp
#include "Foo.h"
#include <iostream>
void Foo::Initialize()
{
std::cout << "static void Foo::DoSomething()" << std::endl;
}
Foo * Foo::CreateFoo()
{
std::cout << "static Foo * Foo::CreateFoo()" << std::endl;
return new Foo(); // Calling a constructor from a static method
}
Foo::Foo()
{
std::cout << "Foo::Foo()" << std::endl;
DoSomething(); // Calling a static method from the constructor
value = 42;
}
int Foo::GetValue()
{
return value;
}main.cpp
#include "Foo.h"
#include <iostream>
int main()
{
Foo * f1 = new Foo();
std::cout << "Foo's value is: " << f1->GetValue() << std::endl;
delete f1;
Foo * f2 = Foo::CreateFoo();
std::cout << "Foo's value is: " << f2->GetValue() << std::endl;
delete f2;
return 0;
}