Bonjour
supposons les 4 classes suivantes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class A { private: string n; string p; int a; public: A(string, string, int); ... };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class B: virtual public A { private: ... public: B(string nn, string pp, int aa):A(nn, pp, aa){ //autres initialisations //sans passage d'arguments!! } .. };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class c: virtual public A { private: ... float z; public: C(string nn, string pp, string aa, float zz):A(nn, pp, aa) { //autres //initialisations avec et //sans passage d'arguments!! } ... };bon jusqu'à la rien de méchant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class D: public B, public C { public: D(string nn, string pp, string aa, string zz): A(nn, pp, aa), B(nn, pp, aa), C(nn, pp, aa, zz) .... };
Mais voici que je lis que..mais du coup, on déclare comment les constructeurs de B et de C?dans ce cas de figure il est inutile de préciser les informations pour A au niveau des constructeurs B et C..
Car si je déclare le constructeur de B de cette sorte:
B(){...};
alors je ne pourrais jamais créer d'objet B complet car pour cela j'ai besoin des données que B doit hériter de A
... et si je déclare B de cette sorte:
B(string nn, string pp, int a);
alors je suis obligé lors de la définition de faire figurer un :A(nn, pp, aa).
Alors ma question c'est: est ce qu'il est utile ou non de préciser les informations de la class Mère au niveau des constructeurs B et C?
Si non, alors comment faire pour déclarer / définir les constructeurs de B et de C en sorte qu'on puisse créer des objet B et C pouvant hériter de A .. mais sans pour autant préciser les informations pour A au niveau des constructeurs B et C
![]()
Partager