Surcharge d operateur = et virtual , ca va ensemble ?

Surcharge d operateur = et virtual , ca va ensemble ? - C++ - Programmation

Marsh Posté le 17-07-2003 à 10:37:23    

Salut,
 
j essaie de surcharger l operateur = (affectation) pour plus de lisibilité dans mon code.
 
En gros j ai une classe de base  
 

Code :
  1. class CBase {
  2.     CBase():
  3.     ~CBase();
  4.     int a;
  5.     int b;
  6. };
  7. class CFille1  {
  8.       CFille1();
  9.       ~CFille1();
  10.       int c;
  11. }
  12. class CFille2  {
  13.       CFille2();
  14.       ~CFille2();
  15.  
  16.       int d;
  17. }


 
 
je voudrais dupliquer des objets de cette facon :
 

Code :
  1. CFille1 *pF1;
  2. pF1= new CFille1;
  3. pF1->a = 1;
  4. pF1->b = 2;
  5. pF1->c = 3;
  6. CFille2 *pF2;
  7. pF2 = new CFille2;
  8. pF2 = pF1;


 
 
comment surcharger l operateur au niveau de la classe de base (pour qu il ne copie que les params de base) et au niveau de chaque classe fille (pour qu il copie les params base et fille)  
 
 
Est ce que la notion "virtual" existe pour les surcharges d operateur ?
 
 
merci


Message édité par xilebo le 17-07-2003 à 11:02:30
Reply

Marsh Posté le 17-07-2003 à 10:37:23   

Reply

Marsh Posté le 17-07-2003 à 11:00:15    

ce serait une bonne idee de faire deriver tes classes filles de la classe de base pour debuter.
 
et pour la surcharge fais une recherche sur ce forum ca a surement deja ete aborde maintes fois. (sinon va sur www.dejanews.com tu trouvera aussi plein de code source avec de la surchage d'operateur)


Message édité par polo021 le 17-07-2003 à 11:00:46
Reply

Marsh Posté le 17-07-2003 à 11:01:39    

je m explique un peu car ca n a pas l air clair.
 
je voudrais utiliser la puissance de virtual pour la surcharge des operateur c est a dire que si je fais :
 
 

Code :
  1. obj2 = obj1 ;


avec obj1 et obj2 declaré en tant que CBase mais alloué en tant que CFille1 (ou CFille2 on s en fout) : est il possible que ca fasse appel automatiquement a la surcharge d operateur de la classe CFille1 comme cela fonctionnerait avec une fonction virtuelle ?
 
PS : polo021 , je ne debute pas du tout en C++ ;) mais j ai un doute sur ce point car j utilise rarement la surcharge d operateur.


Message édité par xilebo le 17-07-2003 à 11:04:02
Reply

Marsh Posté le 17-07-2003 à 11:13:22    

l'opérateur =  comme les autres opérateurs qui peuvent etre synthéthisés par le compilateur, ne s'heritent pas, ne peuvent etre virtuels

Reply

Marsh Posté le 17-07-2003 à 11:17:12    

merde ca c est con, ca pourrait etre bien pratique. du coup je vais devoir faire un switch pas beau. Tant pis, merci pour l eclaircissement.
 
edit : non mieux, je vais ecrire une fonction virtuelle de duplication.


Message édité par xilebo le 17-07-2003 à 11:18:18
Reply

Marsh Posté le 17-07-2003 à 11:34:55    

le con, c'est toi: un constructeur, opérateur d'affectation virtuels ça veut rien dire: si y a bien des opérations ou le type importe c'est celles-ci. réfléchis un peu et t'auras honte.

Reply

Marsh Posté le 17-07-2003 à 11:59:29    

++Taz a écrit :

le con, c'est toi: un constructeur, opérateur d'affectation virtuels ça veut rien dire: si y a bien des opérations ou le type importe c'est celles-ci. réfléchis un peu et t'auras honte.


 
eh oh pas d insulte ... tu te prends pour qui ?  
 
je demande un renseignement, tu m affirme que ca n est pas possible. Je trouve donc une autre solution, c'est tout.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed