2011-02-08 4 views

Répondre

2

A(A a){/*do something*/} peut être utile en tant que constructeur de copie.

3

Si vous voulez dire celui avec le paramètre, il n'y a aucune raison d'avoir du tout, étant donné que ce ignore complètement le paramètre, et il y a déjà un autre constructeur avec le même effet.

Si vous pouvez donner un exemple plus réaliste, nous pourrions être en mesure de donner plus d'informations utiles ...

0

Vous êtes question n'est pas très claire, mais fondamentalement, si vous avez une classe, qui a un constructeur, qui prend une instance de la même classe, alors vous avez un constructeur de copie. c'est-à-dire un constructeur qui crée une nouvelle instance avec les mêmes valeurs internes que l'original.

Éditer - en supposant bien sûr que votre constructeur fasse autre chose que simplement créer une nouvelle instance.

1

Il n'y a aucun avantage sauf si vous avez besoin d'un constructeur de copie. Je suggère d'utiliser la méthode clone() si cet objet doit être clonable plutôt que d'utiliser une sémantique de constructeur de copie.

2

Comme d'autres l'ont dit, vous avez un constructeur de copie. Il y a un number of reasons pourquoi vous voudrez peut-être un constructeur de copie. Certains d'entre eux sont:

  1. Vous pouvez fournir une alternative à la méthode de clonage. (Qui est implémenté via l'interface Clonable.)
  2. Les constructeurs de copie sont facilement implémentés.
  3. Vous pouvez utiliser un autre constructeur pour générer la copie (en extrayant les données de l'objet d'origine et en les transmettant à un constructeur normal).

Consultez le lien que j'ai ajouté à ce post pour plus d'informations sur les constructeurs de copie et pourquoi vous voudriez les utiliser (si vous en avez besoin).

0

Il pourrait également être utile dans un certain nombre de modèles de conception à base de délégation telles que decorator ou proxy etc.

avec un constructeur par défaut peut encore être considérée comme une bonne pratique, en particulier dans des scénarios où l'injection de dépendance ou sérialisation sont considérés comme .