Je ne comprends pas comment les constructeurs de copie fonctionnent en détail

Journal :

Quel est le but de ce code?

public Fraction(Fraction other) {
    num = other.num; 
    denom = other.denom; 
}

Si vous avez un constructeur comme ceci:

public Fraction(int n, int d) {
    num = n;
    denom = d;
}

Pourquoi avez-vous d'initialiser other.numà numet other.denomà denom. Ce qui est avec la syntaxe du constructeur de copie? Quel est le but?

Leo Aso:

Si vous deviez taper simplement

public Fraction(Fraction other) {
}

Java ne va pas simplement de deviner que vous voulez copier les valeurs de otherdans le nouvel objet. Java n'initialise pas automatiquement vos variables pour vous comme ça. Pour que ce soit un constructeur de copie, vous devez toujours taper manuellement le code qui copie les champs de otherl'objet que vous créez. Comme ça:

public Fraction(Fraction other) {
    num = other.num; 
    denom = other.denom; 
}

Le constructeur crée un nouveau , Fractionmais il est le code que vous tapez à l' intérieur qui effectue de manuellement la « copie » qui en fait un « constructeur de copie » et vous permet de le faire

Fraction a = Fraction(4, 20);
Fraction b = new Fraction(a); 
// b has the same values as a but is a different object

Bien sûr, si vous avez déjà un autre constructeur, un chemin plus court pour faire un constructeur de copie est

public Fraction(int n, int d) {
    num = n; 
    denom = d; 
}

public Fraction(Fraction other) {
    this(other.num, other.denom);
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=314134&siteId=1
conseillé
Classement