surchage << , obligatoirement non membre ? - C++ - Programmation
Marsh Posté le 14-01-2009 à 00:49:34
C'est la magie du Koenig Lookup (argument-dependant lookup).
Ca n'est pas obligatoirement friend, il suffit d'avoir par exemple une fonction membre void print(ostream& ) const, et à ce moment là, la fonction libre << devient triviale à écrire.
Marsh Posté le 14-01-2009 à 01:21:19
a ok, il suffit juste que
d::ostream& operator <<(std::ostream& Stream, const M& Obj)
{
Stream << Obj.I;
return Stream;
}
soit définit dans le même namespace que l'argument et ça marche.
D'aileurs dans le cas d'un programme bateau : un main, une classe et la fonction << adéquate, ces 3 parties sont définies dans quel namespace, ça porte un nom ?
Marsh Posté le 14-01-2009 à 16:12:48
en général, il est pas friend et il appelle un methode pritn ou approchant pr des histoires de virtualités
Marsh Posté le 13-01-2009 à 23:19:29
On ne peut pas déclarer la surcharge de << membre de la classe, c'est obligatoirement friend?
en faite je comprends pas comment cout.operator <<(M &o) réussit à appeler la bonne fonction....
Message édité par frenchtoucco le 13-01-2009 à 23:21:05
---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.