C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Surcharge d'opérateur avec uniquement des types standards.

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Loïc Joly
Guest





PostPosted: Thu Aug 25, 2005 5:18 pm    Post subject: Surcharge d'opérateur avec uniquement des types standards. Reply with quote



Bonjour,

Je sais qu'il est interdit d'écrire une surcharge, par exemple, de
l'opérateur + qui prenne en paramètre deux types de base comme int et long.

Par contre, je me pose la question de la légalité d'une écriture comme
celle-ci :

string operator+ (string s, int i);

J'aurais intuitivement pensé que ce n'était pas autorisé, mais je
n'arrive pas à trouver des éléments à ce sujet dans le standard. Qu'en
est-il ?

--
Loïc
Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Aug 25, 2005 6:59 pm    Post subject: Re: Surcharge d'opérateur avec uniquement des types standard Reply with quote



On Thu, 25 Aug 2005 19:18:55 +0200, Loïc Joly
<loic.actarus.joly (AT) wanadoo (DOT) fr>:

Quote:
Par contre, je me pose la question de la légalité d'une écriture comme
celle-ci :

string operator+ (string s, int i);

std::string n'est pas un type de base, donc il n'y a pas de problème.
Par contre, il y a des chances pour que l'utilisation de ce machin
soit contre-intuitive, voire pose des problèmes.
Mieux vaut passer par les ostringstream.


Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Fri Aug 26, 2005 7:26 am    Post subject: Re: Surcharge d'opérateur avec uniquement des types standard Reply with quote



Fabien LE LEZ wrote:
Quote:
On Thu, 25 Aug 2005 19:18:55 +0200, Loïc Joly
[email]loic.actarus.joly (AT) wanadoo (DOT) fr[/email]>:

Par contre, je me pose la question de la légalité d'une
écriture comme celle-ci :

string operator+ (string s, int i);

std::string n'est pas un type de base, donc il n'y a pas de
problème.

Ce n'est pas dit. Dans le contexte d'une récherche dépendante
dans un template, par exemple, le compilateur ne le trouverait
que s'il est dans le namespace std. Et formellement, on n'a pas
le droit d'introduire de nouvelles fonctions dans std (même s'il
fort probable que ça marche dans ce cas-ci).

Quote:
Par contre, il y a des chances pour que l'utilisation de ce
machin soit contre-intuitive, voire pose des problèmes. Mieux
vaut passer par les ostringstream.

Tout à fait. Même sans le problème ci-dessus, c'est une mauvaise
idée.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
Fabien LE LEZ
Guest





PostPosted: Fri Aug 26, 2005 7:52 am    Post subject: Re: Surcharge d'opérateur avec uniquement des types standard Reply with quote

On 26 Aug 2005 00:26:02 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email]:

Quote:
que s'il est dans le namespace std

D'un autre côté, je me suis peut-être avancé en parlant de std. Si ça
se trouve, l'OP a créé une classe "string". Très mauvaise idée,
certes, mais il était de toutes façons parti pour la déconne avec son
"operator+"...


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.