Vous souvenez-vous encore de la phrase de la leçon précédente : « Une classe est l'abstraction et la généralisation d'un objet, et un objet est le caractère concret et l'instance d'une classe » ? Après avoir appris la définition d'une classe, l'étape suivante consiste à créer et utiliser des objets !
1. Création d'objets :
Une classe est une structure qui contient des fonctions. C'est un type de données auto-défini. Utilisez-le pour définir des variables, qui sont des objets. C'est ce qu'on appelle « l'objet est une instance concrète et une instance d'une classe ». de cette classe est défini, on peut aussi dire Instancier un objet, c'est ce que ça veut dire !
L'utilisation des objets est la même que celle des structures. Ils accèdent principalement aux membres à l'intérieur, et ils sont tous accessibles à l'aide de , tels que :
StudentA;A.num=101;strcpy(A.name,dotcpp);A.score=100;A.print();
Il convient de noter que les variables membres de la classe ici sont toutes déclarées comme types publics . Si elles sont déclarées comme types privés, il leur sera interdit de signaler des erreurs si elles sont directement accessibles principalement via des objets et des variables dans la fonction principale. la raison est que les variables de type privé sont des types privés et ne permettent pas l'accès externe.
Pour les variables privées que nous souhaitons protéger mais contrôler, nous les déclarons généralement comme types privés, puis définissons en même temps une méthode d'affectation spéciale de type public. Puisque les membres internes peuvent accéder aux variables déclarées privée, nous pouvons l'utiliser. public en externe pour contrôler indirectement ces membres privés afin d'obtenir l'effet d'encapsulation et de protection, et cette méthode de type public est également appelée interface externe de cette classe. Veuillez comprendre cette phrase !
2. Pointeur vers l'objet :
Comme les variables ordinaires, les objets constituent également un espace mémoire continu, vous pouvez donc également créer un pointeur vers l'objet, c'est-à-dire le pointeur d'objet , pour stocker l'adresse de l'objet.
Ensuite, la méthode de création est similaire à l'utilisation d'un pointeur de type général, et la méthode de définition est la suivante :
Nom de la classe * nom du pointeur ;
Par exemple, définissez Student *p ; définissez un pointeur p de type Clock. Il doit être clair que l'objet n'est pas créé ici, et bien sûr le constructeur ne sera pas appelé. Ensuite, vous pouvez attribuer l'adresse d'un objet de classe du même type à ce pointeur, puis accéder aux membres de l'objet via ->.
Le code est le suivant :
Étudiant*p;ÉtudiantA;p=&A;p->print();
Ce qui précède explique comment utiliser les pointeurs d'objets. En plus de les utiliser lors de l'attribution de valeurs et de l'accès aux membres, il est également recommandé d'utiliser des pointeurs lors de la transmission de paramètres, car ils transmettent des adresses et ne copient pas les affectations entre les objets, réduisant ainsi la surcharge de mémoire. et améliorer l'efficacité.
3. Référence de l'objet :
La référence est un nouveau type en C++. Une référence d'objet est un alias pour un objet de classe. En substance, l'adresse de l'objet de classe est attribuée au type de référence. Les deux pointent vers un espace mémoire. Alors comment définir l’usage ? Montrez-le-vous ci-dessous.
ÉtudiantA;Étudiant&Aq=A;
Comme indiqué dans le code ci-dessus, définissez un objet de type Student, puis utilisez & pour définir un type de référence de ce type et affectez l'objet A à Aq comme initialisation.
Les choses à noter sont :
1. Comme les pointeurs, les deux doivent être du même type avant de pouvoir être référencés.
2. À moins que la valeur de retour ou le paramètre formel d'une fonction ne soit utilisé, d'autres types de référence doivent être initialisés en même temps !
3. Le type référence ne crée pas de nouvel objet, le constructeur ne sera donc pas appelé.
Ainsi, puisqu'il s'agit d'un alias d'un objet de classe, la méthode d'utilisation est la même que celle de l'objet de classe, en utilisant la méthode alias.member pour y accéder, telle que :
ÉtudiantA;Étudiant&Aq=A;Aq.print();
Comme vous pouvez le voir, lors de l'utilisation d'un type référence, l'essence est toujours l'adresse stockée. Par conséquent, quelle que soit la définition du paramètre, il n'y aura pas trop de surcharge de mémoire. En même temps, c'est le cas. utilisé de la même manière que l'objet de classe lui-même. Lors de la création d'arguments de fonction, transmettez simplement l'objet de référence directement sans ajouter de caractères d'adresse, pour qu'il semble plus intuitif et plus pratique. C’est l’avantage des types référence.