Maison >développement back-end >C++ >Gestion des références et des pointeurs dans la surcharge et la réécriture de fonctions C++
Lors de la surcharge d'une fonction, transmettez une référence ou un pointeur, et toutes les fonctions doivent utiliser le même type de données. Lorsqu'une fonction est réécrite, pour les fonctions membres de référence, la fonction de sous-classe doit faire référence au même type de variable ; pour pointer vers les fonctions membres, la fonction de sous-classe doit pointer vers le même type de variable.
La surcharge de fonctions permet la création de plusieurs fonctions avec le même nom mais des listes de paramètres différentes dans la même portée. Pour les références et les pointeurs, il faut faire attention aux points suivants :
Lors du passage d'une référence, toutes les fonctions doivent faire référence au même type de données :
void print(const int& num); void print(const double& d);
Lors du passage d'un pointeur, toutes les fonctions doit pointer vers le même type de données :
void print(int* num); void print(double* d);
La réécriture de fonction consiste à implémenter une fonction dans la classe parent avec le même nom et la même liste de paramètres dans la classe enfant. Pour les références et les pointeurs, nous devons faire attention :
Pour les fonctions membres de référence, la fonction de sous-classe doit faire référence au même type de variable :
class Parent { public: void setAge(const int& age); }; class Child : public Parent { public: void setAge(const int& age) override; // 同一类型引用 };
Pour pointer vers les fonctions membres, la fonction de sous-classe doit pointez vers le même type de variable :
class Parent { public: int* getPtr(); }; class Child : public Parent { public: int* getPtr() override; // 同一类型指针 };
Supposons que nous ayons une classe Person
, qui représente l'âge et le nom d'une personne. Il y a deux fonctions membres dans cette classe : setAge(const int& age)
et setName(const string& name)
. Person
类,它表示一个人的年龄和名字。该类中有两个成员函数:setAge(const int& age)
和 setName(const string& name)
。
我们创建一个子类 Employee
,继承自 Person
类,并重写 setAge
函数,在将年龄设置为 age
之前将其加 5。
class Person { public: void setAge(const int& age); void setName(const string& name); }; class Employee : public Person { public: void setAge(const int& age) override; // 重写setAge函数 }; // Employee 类中的 setAge 函数 void Employee::setAge(const int& age) { Person::setAge(age + 5); // 调用父类setAge函数 }
现在,我们可以创建一个 Employee
对象并使用重写的 setAge
Employee
, héritons de la classe Person
et remplaçons la fonction setAge
pour définir l'âge sur age code> avant d’y ajouter 5. 🎜<pre class='brush:cpp;toolbar:false;'>Employee emp;
emp.setAge(20); // 实际设置为 25</pre>🎜Maintenant, nous pouvons créer un objet <code>Employee
et utiliser la fonction setAge
remplacée : 🎜rrreeeCe 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!