Maison > Article > développement back-end > Réponses techniques Compréhension préliminaire de l'orientation objet (classe C++)
Nous devons savoir que le C++ a deux types de données membres : statiques, nostatiques ; trois types de fonctions membres : statiques, nostatiques, virtuelles. En fait, pour les fonctions membres ordinaires, il y a un pointeur this dans le paramètre. Ce pointeur pointe en fait vers l'objet lui-même, via ce pointeur. Le compilateur C++ saura quel objet appelle la fonction membre de la classe.
Nous devons savoir que le C++ a deux types de données membres : statiques, nostatiques ; trois types de fonctions membres : statiques, nostatiques, virtuelles.
Regardez ce cas ci-dessous :
class A { int a; int b; };class B { int a; int b; static int c; };class C { int a; int b; static int c;public: void func() {} static void pg() {} };int main() { //1. 分析A对象占的内存 A a; cout << sizeof(a) << endl; //结果是8 //2. 分析B对象占的内存 B b; cout << sizeof(b) << endl; //结果是8 //3. 分析C对象占的内存 C c; cout << sizeof(c) << endl; //结果是8 return 0; }
En fait, sur la base des résultats de sortie, nous tirons les conclusions suivantes :
a. Variables membres :
Normal Les variables membres sont stockées dans l'objet et ont la même disposition de mémoire et le même alignement d'octets que les variables strutc
les variables membres statiques sont stockées dans la zone de données globales
b. Les fonctions membres sont stockées dans des segments de code.
En fait, pour les fonctions membres ordinaires (et non les fonctions membres statiques), il y a un pointeur this dans le paramètre. Ce pointeur pointe en fait vers l'objet lui-même, via ce pointeur. Le compilateur C++ saura quel objet appelle la fonction membre de la classe.
Résumons :
a. Les variables membres et les fonctions membres dans les objets de classe C++ sont stockées séparément
b. fonctions) contiennent toutes un pointeur this pointant vers l'objet actuel ;
c. Les fonctions membres statiques et les variables membres statiques appartiennent à des classes
d.
Les fonctions membres statiques ne contiennent pas de pointeur this pointant vers un objet spécifique, tandis que les fonctions membres ordinaires contiennent un pointeur pointant vers un objet spécifique.
a. Les variables membres et les fonctions membres dans les objets de classe C++ sont-elles stockées ensemble ? Sinon?
b. Comment le compilateur C++ gère-t-il les classes et les objets ? Plus précisément, les objets appellent des méthodes dans les classes. Comment le compilateur C++ distingue-t-il quel objet spécifique appelle quelle méthode membre ?
Regardez ce cas ci-dessous :
class A { int a; int b; };class B { int a; int b; static int c; };class C { int a; int b; static int c;public: void func() {} static void pg() {} };int main() { //1. 分析A对象占的内存 A a; cout << sizeof(a) << endl; //结果是8 //2. 分析B对象占的内存 B b; cout << sizeof(b) << endl; //结果是8 //3. 分析C对象占的内存 C c; cout << sizeof(c) << endl; //结果是8 return 0; }En fait, sur la base des résultats de sortie, nous tirons les conclusions suivantes :
a. Variables membres :
En fait, pour les fonctions membres ordinaires (et non les fonctions membres statiques), il y a un pointeur this dans le paramètre. Ce pointeur pointe en fait vers l'objet lui-même, via ce pointeur. Le compilateur C++ saura quel objet appelle la fonction membre de la classe.
a. Les variables membres et les fonctions membres dans les objets de classe C++ sont stockées séparément
b. fonctions) contiennent toutes un pointeur this pointant vers l'objet actuel ;
c. Les fonctions membres statiques et les variables membres statiques appartiennent à des classes
d.
Les fonctions membres statiques ne contiennent pas de pointeur this pointant vers un objet spécifique, tandis que les fonctions membres ordinaires contiennent un pointeur pointant vers un objet spécifique.
Recommandations associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!