Bonjour,
J'ai un problème de compréhension à propos des passages par référence. Je suis en train de travailler sur les classes abstraites. Voici ma classe CExcFille qui permet de créer n'importe quel code erreur grâce au constructeur CExcFille :
Je voudrais comprendre pourquoi l'on passe le paramètre Libelle en référence alors que le CodErr non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 namespace { class CExcFille : public CException { public : inline void _Edit() { cout << "Affichage de la fonction _Edit (class CEXcFille)" << endl; } CExcFille(const string & Libelle, const unsigned CodErr) { } }; }
Deuxièmement, j'ai une classe CEditable qui me permet d'afficher n'importe quel flux via l'opérateur << :
Je ne comprends pas pourquoi la fonction renvoi un ostream et pourquoi est-il en référence ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 namespace nsUtil { class CEditable { public : virtual std::ostream & operator << (std::ostream & os, const CEditable & Obj) { return Obj._Edit(os); } virtual std::ostream _Edit( const std::ostream & os) =0; virtual ~CEditable (void); }; } { class CExcFille : public CException { public : inline virtual ostream & _Edit (ostream & os) { return os << "Affichage de la fonction _Edit (class CEXcFille)" << endl; } CExcFille(const string & Libelle, const unsigned CodErr) : CException(Libelle,CodErr) {} };
De même pour ces deux opérateurs, pourquoi l'un prend une référence et l'autre non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CDuree & operator ++ (void) throw (); CDuree operator ++ (int) throw ();
Merci de votre aide !
Partager