Bonjour,
J'ai des trous de mémoires de de compétences sur la surcharge d'opérateur.
A quoi ca sert?
Par exemple ici: pourquoi surcharge t'on les opérateur -> et * ? 
Fichier CPtr.h#if !defined __CPTR_H__
#define __CPTR_H__
namespace std
{
template <typename T>
// Pourquoi ne met on pas template <class T> Quelle est la différence? class CPtr
{
protected :
T * m_Ptr;
public :
CPtr (void);
~CPtr (void);
T & operator * (void) throw ();
const T & operator * (void) const throw ();
// non obligatoire?? T * operator -> (void) throw ();
const T * operator -> (void) const throw ();
// non obligatoire?? private
CPtr & operator = (const CPtr & Ptr);
CPtr (const CPtr & Ptr);
}; // CPtr
} // namespace std
#include "CPtr.hxx"
#endif /* __CPTR_H__ */
Fichier CPtr.cxx#if !defined __CPTR_HXX__
#define __CPTR_HXX__
#include "CPtr.h"
#define TEMPL template <class T>
// class ou typename?#define TEMPLINL TEMPL inline
#define CPTR std::CPtr <T>
TEMPLINL CPTR:: CPtr (void) { m_Ptr = new T(); }
TEMPLINL CPTR::~CPtr (void) { delete m_Ptr; }
TEMPLINL
T & CPTR::operator * (void) throw () { return *m_Ptr; }
TEMPLINL
const T & CPTR::operator * (void) const throw () { return *m_Ptr; }
TEMPLINL
T * CPTR::operator -> (void) throw () { return m_Ptr; }
TEMPLINL
const T * CPTR::operator -> (void) const throw () { return m_Ptr; }
#undef CPTR
#undef TEMPLINL
#undef TEMPL
#endif /* __CPTR_HXX__ */
Merci pour votre aide, j'ai rajouté quelques autres questions qui me trotter dans la tête...