Предположим, что у нас есть класс, какСтатический объект член класса в том же классе
class Egg
{
static Egg e;
int i;
Egg(int ii):i(ii) {}
Egg(const Egg &); //Prevents copy-constructor to be called
public:
static Egg* instance() {return &e}
};
Egg Egg::e(47);
Этот код гарантирует, что мы не можем создать любой объект, но может использовать только статический объект. Но как мы можем объявить статический объект того же класса в классе.
И еще одно, поскольку e является статическим объектом, а статические объекты могут вызывать только статические функции-члены, поэтому как конструктор может быть вызван здесь для статического объекта e, а его конструкторы являются частными.
Статический объект находится внутри класса, но как он может получить доступ к частному конструктору. Объекты обычно не могут быть созданы, если их конструктор является закрытым. – Luv
Он может получить доступ к конструктору, так как он определен внутри класса. Все внутри класса может получить доступ к частным членам. –