Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1100 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Opérateurs et héritage

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Opérateurs et héritage

n°361121
deltaden
Posté le 15-04-2003 à 04:50:08  profilanswer
 

salut,
 
si j'ai une classe A dans laquelle je définis l'opérateur "=",
et que j'ai une classe fille B; l'opérateur "=" est toujours bien définis sur mes objets B ? C'est juste pour être certain...
 
Et au fait, si j'ai une autre classe fille de A, qui elle redéfinit l'opérateur "=" autrement, ca va marcher correctement?, ou je dois déclarer operator= comme virtual dans A, comme pour les méthodes "normales" ?
 
Merci


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
mood
Publicité
Posté le 15-04-2003 à 04:50:08  profilanswer
 

n°361143
Taz
bisounours-codeur
Posté le 15-04-2003 à 08:53:00  profilanswer
 

l'operator= ne sh'erite pas, il est toujours synthétisé par défaut

n°361678
deltaden
Posté le 15-04-2003 à 13:33:54  profilanswer
 

ha ok, donc si j'ai une classe purement virtuelle, ca ne sert à rien d'y redéfinir des opérateurs? Il faut le faire dans chaque sous-classe ?


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°361687
Taz
bisounours-codeur
Posté le 15-04-2003 à 13:41:18  profilanswer
 

j'ai dit juste opretor=

n°361691
deltaden
Posté le 15-04-2003 à 13:42:19  profilanswer
 

ha ok, j'ai eu peur...
Et il est synthétisé par défaut comme faisant quoi ?


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°361695
Taz
bisounours-codeur
Posté le 15-04-2003 à 13:43:55  profilanswer
 

affectation membre-à-membre

n°361703
theshockwa​ve
I work at a firm named Koslow
Posté le 15-04-2003 à 13:47:13  profilanswer
 

++Taz a écrit :

affectation membre-à-membre


 
J'en profite pour poser une question ...
 
Ca copie parties privée + publique + protected ? C'est bien ca ?
 
Ca revient à faire un memcpy de l'objet, non ?

n°361707
Taz
bisounours-codeur
Posté le 15-04-2003 à 13:48:22  profilanswer
 

:non: ça copie tout, mais ça fait tout sauf du memcpy. ça affecte chaque membre avec son opérateur d'affectation respectif

n°361711
chrisbk
-
Posté le 15-04-2003 à 13:50:05  profilanswer
 

theShOcKwAvE a écrit :


 
J'en profite pour poser une question ...
 
Ca copie parties privée + publique + protected ? C'est bien ca ?
 
Ca revient à faire un memcpy de l'objet, non ?


 
ne pas utiliser les fonctions memcpy/memset sur un objet (le pointeur sur vtable risque de ne pas aimer)

n°361720
polo021
Posté le 15-04-2003 à 13:55:04  profilanswer
 

la seule utiliste de surcharger l'operateur =,
c'est pour les pointeurs non? sinon il copie l'adresse et pas le contenu. C'est bien ca? Ou alors je confonds avec l'operateur ==

mood
Publicité
Posté le 15-04-2003 à 13:55:04  profilanswer
 

n°361725
Taz
bisounours-codeur
Posté le 15-04-2003 à 13:57:00  profilanswer
 

de toutes façons, mem*, c'est du C. ça dégage à moins de savoir exactement ce qu'on fait et de ne pouvoir faire autrement.

n°361727
Taz
bisounours-codeur
Posté le 15-04-2003 à 13:57:53  profilanswer
 

polo021 a écrit :

la seule utiliste de surcharger l'operateur =,
c'est pour les pointeurs non? sinon il copie l'adresse et pas le contenu. C'est bien ca? Ou alors je confonds avec l'operateur ==

non, c'est bien plus que ça. dupliqué un objet peut impliquer beaucoup plus de choses que copier des membres et des plages de données.

n°361732
polo021
Posté le 15-04-2003 à 13:59:17  profilanswer
 

++Taz a écrit :

non, c'est bien plus que ça. dupliqué un objet peut impliquer beaucoup plus de choses que copier des membres et des plages de données.


si tu le dis

n°361738
chrisbk
-
Posté le 15-04-2003 à 14:00:58  profilanswer
 

++Taz a écrit :

de toutes façons, mem*, c'est du C. ça dégage à moins de savoir exactement ce qu'on fait et de ne pouvoir faire autrement.


 
bah pour copier des tableaux d'entier/float/truc du genre, c quand meme achement pratique [:spamafote]

n°361739
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:01:09  profilanswer
 

je sens du mépris là

n°361740
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:01:32  profilanswer
 

chrisbk a écrit :


 
bah pour copier des tableaux d'entier/float/truc du genre, c quand meme achement pratique [:spamafote]

genre c'est du C

n°361741
kadreg
profil: Utilisateur
Posté le 15-04-2003 à 14:02:00  profilanswer
 

chrisbk a écrit :


bah pour copier des tableaux d'entier/float/truc du genre, c quand meme achement pratique [:spamafote]


 
[:nraynaud]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°361742
chrisbk
-
Posté le 15-04-2003 à 14:02:10  profilanswer
 

++Taz a écrit :

genre c'est du C


 
genre quelle serait la version ++Taz compliant ?

n°361744
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:02:21  profilanswer
 
n°361746
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:03:20  profilanswer
 

chrisbk a écrit :


 
genre quelle serait la version ++Taz compliant ?

ben si c'est un tableau, la recopie est triviale, sinon voir un conteneur STL ou utiliser std::copy

n°361760
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:08:02  profilanswer
 

j'attire votre attention sur std::copy qui remplace bien mieux tous  les trucs du C
 
http://www.sgi.com/tech/stl/copy.html

n°361767
deltaden
Posté le 15-04-2003 à 14:14:43  profilanswer
 

d'ailleurs, si on fait une affectation d'un tableau, ca fait bien une affectation de tous les éléments individuellement ?


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°361768
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:15:33  profilanswer
 

oui

n°361773
deltaden
Posté le 15-04-2003 à 14:18:07  profilanswer
 

merci bien


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°361781
polo021
Posté le 15-04-2003 à 14:19:08  profilanswer
 


hein?
C'est quoi cette histoire? vous parlez d'un tableau comment la?

n°361787
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:21:23  profilanswer
 

ben un tableau genre MonObjet tableau[100]

n°361796
theshockwa​ve
I work at a firm named Koslow
Posté le 15-04-2003 à 14:24:12  profilanswer
 

++Taz a écrit :

de toutes façons, mem*, c'est du C. ça dégage à moins de savoir exactement ce qu'on fait et de ne pouvoir faire autrement.


 
okok ... C'était juste pour avoir une idée du comportement ... C'est sur que je n'utilise pas trop souvent de memcpy en C++ ...
 


---------------
last.fm
n°361804
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:27:08  profilanswer
 

et tu fais bien. en C++, on a des objets, et pas des 01. dans tous les cas on remplace memset pas std::fill et memcpy par std::copy

n°361812
polo021
Posté le 15-04-2003 à 14:30:01  profilanswer
 

++Taz a écrit :

ben un tableau genre MonObjet tableau[100]


venant de ta part ca m'etonne un peu. J'ai ratter un truc.
Mais il me semble qu'un tableau c'est une adresse?
 
int tab1[10];
int tab2[10];
tab2 = tab1;
 
ca fait pas un copie membre a membre mais juste que tab2 pointe sur tab1  
 
 :??:

n°361815
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:31:11  profilanswer
 

tableau != pointeur    [:tomtom75]

n°361835
polo021
Posté le 15-04-2003 à 14:35:24  profilanswer
 

++Taz a écrit :

tableau != pointeur    [:tomtom75]  


nan mais serieux un tableau c'est betement une adresse sur une zone memoire contigue, stout.
On peut acceder a l'element x par *(tab1+x) tab1 etant l'adresse du premier element du tableau , donc de la zone memoire.
 
Mais bon  :wahoo:

n°361839
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:36:38  profilanswer
 

toi t'as rien compris du tout

n°361849
deltaden
Posté le 15-04-2003 à 14:38:12  profilanswer
 

au fait, quand on définis
test tab[10];
il remplit le tableau grâce au constructeur par défaut, c'est ca ?
 
et d'ailleurs, tant que j'y suis, si on ne redéfinis pas l'opérateur "==", il effectue la comparaison sur chaque variable d'instance? Et si oui, == sur des tableaux, ca fait quoi ? ca compare élément par élément (si même taille je suppose?)
Et == sur des pointeurs ca vérifie juste que c'est les mêmes adresses ?


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°361854
polo021
Posté le 15-04-2003 à 14:39:37  profilanswer
 

++Taz a écrit :

toi t'as rien compris du tout


[:ruisseau de larmes]

n°361860
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:40:32  profilanswer
 

== pareil memebre à membre. mais comme pour les structures, == ne fonctionne pour les tableaux. il faut donc comparer à la main

n°361863
polo021
Posté le 15-04-2003 à 14:41:00  profilanswer
 

deltaden a écrit :

au fait, quand on définis
test tab[10];
il remplit le tableau grâce au constructeur par défaut, c'est ca ?
 
et d'ailleurs, tant que j'y suis, si on ne redéfinis pas l'opérateur "==", il effectue la comparaison sur chaque variable d'instance? Et si oui, == sur des tableaux, ca fait quoi ? ca compare élément par élément (si même taille je suppose?)
Et == sur des pointeurs ca vérifie juste que c'est les mêmes adresses ?


ben operateur== sur des pointeurs ca compare les adresses qu'ils contiennent et pas l'element sur lesquels ils pointent.
C'est juste ++Taz? :??:
Je crois que j'ai le don de mal m'expliquer.
Je laisse tomber


Message édité par polo021 le 15-04-2003 à 14:42:14
n°361866
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:41:41  profilanswer
 

1) un tableau n'est pas une l-value
2)tableau[n];
sizeof tableau == sizeof(Element)*n;

n°361868
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:41:54  profilanswer
 

polo021 a écrit :


ben operateur== sur des pointeurs ca compare les adresses qu'ils contiennent et pas l'element sur lesquels ils pointent.
C'est juste ++Taz? :??:  

oui

n°361874
polo021
Posté le 15-04-2003 à 14:43:35  profilanswer
 

++Taz a écrit :

1) un tableau n'est pas une l-value
2)tableau[n];
sizeof tableau == sizeof(Element)*n;


 
je suis entierement d'accord
sizeof tableau == sizeof(Element)*n == ((tableau+n-1) - (tableau))/sizeof(element)


Message édité par polo021 le 15-04-2003 à 14:45:06
n°361877
Taz
bisounours-codeur
Posté le 15-04-2003 à 14:44:39  profilanswer
 

pourtant ça avait aps l'air d'etre clair

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Opérateurs et héritage

 

Sujets relatifs
héritage : est-ce possible?Héritage avec VB DOT NET
[help] bases relationnelles\les operateurs ensemblistes[c++] Heritage de classes
c++ , classes et heritageProbleme heritage classe
probleme d'heritage[c++]héritage
[c++] héritageComment faire une calculette sous vb(opérateurs)
Plus de sujets relatifs à : Opérateurs et héritage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR