Passer des paramètres au Constructeur de Classe de Base lors de la création Objet de classe Dérivée
Considérons deux classes A
et B
class A
{
public:
A(int);
~A();
};
class B : public A
{
public:
B(int);
~B();
};
int main()
{
A* aobj;
B* bobj = new bobj(5);
}
Maintenant, la classe B
hérite A
.
Je veux créer un objet de B
. Je suis conscient que la création d'un objet de classe dérivée, va également invoquer le constructeur de classe de base , mais c'est le constructeur par défaut sans paramètre.
Ce que je veux, c'est que B
de prendre un paramètre (par exemple, 5), et de le transmettre au constructeur de A
.
Merci de montrer un peu de code pour illustrer ce concept.
- B::B(int val) : Un(val) {}
- Je pensais que vous voulez faire le destructeur de prendre des arguments, n'a pas regardé comme une faute de frappe pour moi. Et pas besoin de
!!
. Bas-vote est revenue, commentaire supprimé.
Vous devez vous connecter pour publier un commentaire.
Utilisation de la base de membre d'initialisation:
Si vous utilisez votre constructeur de classe dérivée juste pour passer des arguments à la classe de base, alors vous pouvez aussi le faire dans un plus court chemin dans C++11:
Noter que je n'ai même pas utilisé "public" spécificateur d'accès avant. Ce n'est pas nécessaire, puisque hérité des constructeurs sont déclarées implicitement avec le même niveau d'accès que dans la classe de base.
Pour plus de détails, veuillez vous référer à la section Hériter constructeurs à: https://en.cppreference.com/w/cpp/language/using_declaration
Aussi vous pouvez vous référer à https://softwareengineering.stackexchange.com/a/307648 comprendre les limites sur le constructeur de l'héritage.
de catégorie A
{ public:
int aval;
};
class B : public
{ public:
int bval;
};
int main()
{
}
Dans ce cas, vous affectez les valeurs de la classe de base et la classe dérivée .