У меня есть этот вопрос из-за конструктора singleton/named. В обоих случаях реальные конструкторы защищены или закрыты, ни один из которых не доступен извне.
Например, конструктор с коротким именем выглядит следующим образом:
class A
{
public:
static A createA() { return A(0); } // named constructor
private:
A (int x);
};
int main(void)
{
A a = A::createA();
}
Я думал, что статический метод может получить доступ только к статическому элементу данных или получить доступ к личным данным/методам через существующий объект.
Однако в приведенном выше коде частный конструктор A()
не является статическим, и в то время, когда он вызывается, объект не существует.
Поэтому единственное объяснение, о котором я могу думать, это то, что статический метод может получить доступ к нестационарному частному методу того же класса. Может ли кто-нибудь угодить или утверждать или отрицать мою мысль, возможно, с некоторыми пояснениями?
Извиняюсь, если это слишком тривиально, но ключевые слова слишком распространены, и я не смог найти ответ на десятках страниц Google. Спасибо заранее.