GNT sans publicité, site mobile, fonctionnalitées exclusives...

question sur le temps d'execution des operateurs

Le
Fred
j'ai vu qu'il etait coutume de definir les operateurs avec une valeur de
retour, meme pour certains operateurs ou cela n'etait pas forcement tres
utile.

example

const MonType& operator=(conts MonType& maValeur);

alors que l'on peut aussi faire

void operator=(conts MonType& maValeur);

Donc

Mes questions :

si on fait juste "a=b;" y a t'il une difference dans le temps d'execution
des 2 operateurs?

si on fait "a=b=c=d=e=f=g;" y a t'il une difference entre les 2 operateurs?

qui est "le plus fort"
f=g;
e=f;
d=e;
c=d;
d=b;
a=b;

ou
a=b=c=d=e=f=g;

ou est-ce que cela n'apporte juste qu'une souplesse dans l'ecriture?

Fred
Lire les 12 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #151479
"Fred"
const MonType& operator=(conts MonType& maValeur);

void operator=(conts MonType& maValeur);

si on fait juste "a=b;" y a t'il une difference dans le temps d'execution
des 2 operateurs?


Faut mesurer. Rien d'important a priori.

si on fait "a=b=c=d=e=f=g;" y a t'il une difference entre les 2 operateurs?


Le deuxieme n'est pas permis.

qui est "le plus fort"


Qu'entends-tu par "le plus fort"?

On rencontre aussi

MonType& operator=(MonType const&);

qui a l'avantage d'etre celle utilisee quand c'est le compilateur qui
la genere.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++...index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Benoit Dejean
Le #151404
Le Tue, 01 Jul 2003 10:51:38 +0200, Vincent Richard a ecrit:


j'ai vu qu'il etait coutume de definir les operateurs avec une valeur
de retour, meme pour certains operateurs ou cela n'etait pas forcement
tres utile.

example

const MonType& operator=(conts MonType& maValeur);




La fonction correcte est la 1ère (sans le "const" en valeur de retour
!).


ou est le problème? moi il me semble que le const permet de garder un peu
de lisibilité et d'eviter les confusions...

class Foo
{
public:
const Foo & operator=(const Foo &other) {
return *this;
}

void f() const
{}

void g()
{}
};


int main()
{
Foo a, b,c;

a=b;
a=b=c;

// on peut pas dire que ça soit une tres bonne pratique :oD
(a=b=c).f();
(a=b=c).g();
}


--
Ne perdez pas de vue qu'un programme qui plante est d'une utilité quasi nulle,
ce qui est loin d'être incompatible avec la notion d'Art.


Christophe Lephay
Le #151403
"Jean-Marc Bourguet" news:
On rencontre aussi

MonType& operator=(MonType const&);

qui a l'avantage d'etre celle utilisee quand c'est le compilateur qui
la genere.


Euh, tu pourrais expliquer un peu ou reformuler, stp (je comprends pas très
bien ta phrase) ?

Chris

Fabien LE LEZ
Le #151398
On Tue, 01 Jul 2003 12:19:49 +0200, Benoit Dejean wrote:

const MonType& operator=(conts MonType& maValeur);




La fonction correcte est la 1ère (sans le "const" en valeur de retour
!).


ou est le problème? moi il me semble que le const permet de garder un peu
de lisibilité et d'eviter les confusions...


Avec le const, a=b=c devient interdit.


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/ser...blefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet...senet.html



kanze
Le #151397
Benoit Dejean news:
Le Tue, 01 Jul 2003 10:51:38 +0200, Vincent Richard a ecrit:


j'ai vu qu'il etait coutume de definir les operateurs avec une
valeur de retour, meme pour certains operateurs ou cela n'etait pas
forcement tres utile.

example

const MonType& operator=(conts MonType& maValeur);


La fonction correcte est la 1ère (sans le "const" en valeur de
retour !).


ou est le problème? moi il me semble que le const permet de garder un
peu de lisibilité et d'eviter les confusions...

class Foo
{
public:
const Foo & operator=(const Foo &other) {
return *this;
}

void f() const
{}

void g()
{}
};

int main()
{
Foo a, b,c;

a=b;
a=b=c;

// on peut pas dire que ça soit une tres bonne pratique :oD
(a=b=c).f();
(a=b=c).g();
}


De principe et par goût, je suis d'accord avec toi. Mais le langage
permet des choses comme :

int a ;

int&
f()
{
return a = 1 ;
}

Alors, le principe du moindre surprise veut que tes classes à toi le
permet aussi.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, Tél. : +33 (0)1 30 23 45 16



Publicité
Suivre les réponses
Poster une réponse
Anonyme