Maison > Article > développement back-end > Résumé des points clés de la revue C n° 6 - Le mécanisme de traitement du compilateur pour les propriétés et les méthodes
Le mécanisme de traitement du compilateur pour les attributs et les méthodes
La classe en C part de la théorie orientée objet et définit ensemble des variables (attributs) et des fonctions (méthodes) pour décrire le monde réel. D'un point de vue informatique, un programme se compose toujours de segments de données et de segments de code.
Comment le compilateur C achève-t-il la transformation de la théorie orientée objet en programmes informatiques ?
En d'autres termes : Comment le compilateur C gère-t-il la relation entre les classes, les objets, les classes et les objets ?
Plus précisément : des objets spécifiques appellent des méthodes dans la classe, puis le compilateur C Comment pour distinguer, quelle classe spécifique appeler cette méthode ?
1) Les variables membres et les fonctions membres dans les objets de classe C sont stockées séparément
Variables membres :
Variables membres ordinaires : stocké dans des objets, avec la même disposition de mémoire et le même alignement d'octets que les variables de structure
Variables membres statiques : stockées dans la zone de données globales
Fonctions membres : stockées dans l'extrait de code.
La question se pose : De nombreux objets partagent un bout de code ? Comment le code distingue-t-il des objets spécifiques ?
En d'autres termes : int getK() const { return k; }, comment le code distingue-t-il les valeurs k spécifiques des objets obj1, obj2 et obj3 ?
Le côté gauche est l'implémentation de la classe C et le côté droit est l'implémentation sous-jacente correspondante.
Résumé :
1. Les variables membres et les fonctions membres dans les objets de classe C sont stockées séparément. Le modèle de mémoire à quatre régions en C est toujours valable !
2. Les fonctions membres ordinaires des classes en C contiennent implicitement un pointeur this pointant vers l'objet actuel.
3. Les fonctions membres statiques et les variables membres appartiennent à des classes
La différence entre les fonctions membres statiques et les fonctions membres ordinaires
Les fonctions membres statiques ne contiennent pas de pointeurs vers des objets spécifiques
3. 🎜>
Les fonctions membres ordinaires contiennent un pointeur vers un objet spécifique
Expansion :
Réflexion : Les fonctions membres d'une classe peuvent être modifiées par const. Qui est modifié par const ?
void const get(int a,intb)//类的成员函数 { this->a=100;//错误 this->b=200;//错误 }
Selon l'analyse ci-dessus, l'implémentation interne est
void get (const Test *This,int a,int b)
Par conséquent, const modifie l'espace mémoire pointé par ce pointeur.