J'ai cette question à cause du constructeur singleton/nom. Dans les deux cas, les véritables constructeurs sont protégés ou privés, et aucun d'entre eux n'est accessible de l'extérieur.
Par exemple, un constructeur court nommé est le suivant :
class A
{
public:
static A createA() { return A(0); } // named constructor
private:
A (int x);
};
int main(void)
{
A a = A::createA();
}
Je pensais que les méthodes statiques ne pouvaient accéder qu'à des membres de données statiques, ou accéder à des données/méthodes privées via un objet existant. Cependant, dans le code ci-dessus, le constructeur privé A()
n'est pas statique, et au moment où elle est appelée, aucun objet n'existe non plus. La seule explication à laquelle je peux penser est que la méthode statique peut accéder à une méthode privée non statique de la même classe. Quelqu'un peut-il affirmer ou infirmer ma pensée, éventuellement avec quelques lignes d'explications ?
Je m'excuse si c'est trop banal mais les mots clés sont trop communs et je n'ai pas pu trouver de réponse dans des dizaines de pages de google. Merci d'avance.