La chose la plus terrifiante n'est pas de faire des erreurs, mais de ne pas les trouver. Jusqu'à présent, je sais qu'il y a quelque chose qui ne va pas dans ma compréhension des variables de classe.
Cela peut peut-être être dû au manque d'utilisation fréquente des variables de classe, et ce problème n'a pas été découvert . Je n'ai appris que quelles variables de classe se trouvent lorsque je regardais C ++ récemment ?
J'avais l'habitude de penser que la seule différence entre les variables de classe et les variables membres est que les variables de classe sont accessibles directement via les noms de classe et sont statiques. Les variables membres doivent être instanciées et accédés par le biais d'instances.
Je ne m'attendais pas à ce que j'aie ignoré qu'il n'y a qu'une seule variable de classe dans une classe, et chaque instance est la même. La modification dans un cas affectera la variable de classe dans d'autres cas ... (bien qu'il n'y ait pas de bug causé par cela généralement, j'ai encore besoin de compenser les vulnérabilités cognitives).
Voici 2 exemples écrits en java et python :
classe publique OO {String statique publique S; String public m; statique {s = "jamais"; } public static void main (String [] args) {oo o1 = new oo (); Oo o2 = new oo (); o1.m = "une fois"; // La valeur / l'adresse des variables de classe dans différentes instances est le même System.out.println (o1.s); System.out.println (o2.s); System.out.println (o1.s.s.hashcode ()); System.out.println (o2.s.hashcode ()); o1.s = "123"; System.out.println (o2.s); // modifie la variable de classe et affectez les autres instances System.out.println (o1.m.hashcode ()); System.out.println (o2.m.hashcode ()); // nullpointerException // Les variables membres ont des adresses différentes}} #! / bin / pythonclass b: def whoami (self): print ("__ classe __:% s, self .__ classe __:% s"% (__ classe __, self .__ classe __)) classe C (b): count = 0 def __init __ (self): super (c, self) .__ init __ () sel.Num = 0 def ajouter (self): __. self.num + = 1 def print (self): print ("count_id:% s, num_id:% s"% (id (__ classe __. count), id (self.num))) print ("count:% d, num:% d"% (__ classe __. count, self.num)) i1 = c () i2 = c () i1.hoami () En 1 temps, la variable de membre I2 est augmentée de 2 fois et la variable de classe est augmentée de 3 fois au total i1.add () i2.add () i2.add () i1.print () i2.print ()Ce qui précède concerne cet article. Les vacances se termineront demain. J'espère que tout le monde se consacrera activement à son travail et continuera de prêter attention aux articles partagés par l'éditeur.