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 :

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)
        {
 
        }
    };
}
Je voudrais comprendre pourquoi l'on passe le paramètre Libelle en référence alors que le CodErr non ?

Deuxièmement, j'ai une classe CEditable qui me permet d'afficher n'importe quel flux via l'opérateur << :

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) {}
 
    };
Je ne comprends pas pourquoi la fonction renvoi un ostream et pourquoi est-il en référence ?

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 !