[gull] C++, petit plus

Marc Mongenet marc.mongenet at gmail.com
Wed Feb 8 18:59:54 CET 2006


Bonjour, voici 2-3 réponses à quelques questions posées durant le cours C++ :


1. std::cout << std::endl;
Q: Quelle est la différence entre '\n' et std::endl?
R: std::endl est une fonction implémentée comme
ça dans les includes de GCC :

  template<typename _CharT, typename _Traits>
    basic_ostream<_CharT, _Traits>&
    endl(basic_ostream<_CharT, _Traits>& __os)
    { return flush(__os.put(__os.widen('\n'))); }

En gros, endl appelle flush après avoir sorti '\n'.
En outre endl localise '\n' tout en s'adaptant à toutes
les tailles de caractères (d'où l'appel à widen et
les 2 paramètres templates).


2. Peut-on écrire «operator+(1, 2)» au lieu de «1+2» ?
Non :
test.cc:3: erreur: 'operator+' not defined
Et si on déclare «int operator+(int,int);»
test.cc:1: erreur: 'int operator+(int, int)' must have an argument of
class or enumerated type


Marc Mongenet



More information about the gull mailing list