Pourquoi utiliser une méthode d'initialisation au lieu d'un constructeur?

Je viens de recevoir dans une nouvelle société et une grande partie de la base de code utilise des méthodes d'initialisation à la place des constructeurs.

struct MyFancyClass : theUberClass
{
    MyFancyClass();
    ~MyFancyClass();
    resultType initMyFancyClass(fancyArgument arg1, classyArgument arg2, 
                                redundantArgument arg3=TODO);
    //several fancy methods...
};

Ils m'ont dit que cela avait quelque chose à voir avec le calendrier. Que certaines choses doivent être faites après construction qui échouerait dans le constructeur. Mais la plupart des constructeurs sont vides et je ne vois vraiment pas une raison pour ne pas utiliser les constructeurs.

Je me tourne donc vers vous, oh assistants du C++: pourquoi voudriez-vous utiliser un init-méthode au lieu d'un constructeur?

  • Si votre entreprise ne peut pas l'expliquer, je sens mauvais code.
  • Ressemble à un void est manquant.
  • Je suis d'accord avec Mike. Commencer à chercher un emploi.
  • Je suis un ingénieur. La société est une société d'ingénierie. Le Code peut être malodorantes, aussi longtemps que les algorithmes sont impressionnantes. Et ils le sont! (Si j'avais demandé de plus, ils ont expliqué plus loin. C'est juste que vous les gars peuvent expliquer mieux et plus vite, donc je vous ai demandé à la place ;-))
  • Voir ce lien Wiki sur la dernière norme C++ qu'il n'en résout une raison valable pour les fonctions d'initialisation : en.wikipedia.org/wiki/C%2B%2B11#Object_construction_improvement
InformationsquelleAutor bastibe | 2010-09-24