begin process at 2012 05 30 04:38:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Surcharge d'opérateur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Surcharge d'opérateur

mardi 27 mai 2008 à 12:27:25 | Surcharge d'opérateur

lucyhle

Bonjour,
J'ai des trous de mémoires de de compétences sur la surcharge d'opérateur.
A quoi ca sert?

Par exemple ici: pourquoi surcharge t'on les opérateur -> et * ?
 


Fichier CPtr.h


#if !defined __CPTR_H__
#define __CPTR_H__

namespace std
{
template <typename T> // Pourquoi ne met on pas template <class T> Quelle est la différence?
class CPtr
{
protected :
T * m_Ptr;
public :
CPtr (void);
~CPtr (void);

T & operator * (void) throw ();
const T & operator * (void) const throw (); // non obligatoire??
T * operator -> (void) throw ();
const T * operator -> (void) const throw (); // non obligatoire??

private
CPtr & operator = (const CPtr & Ptr);
CPtr (const CPtr & Ptr);

}; // CPtr

} // namespace std

#include "CPtr.hxx"

#endif /* __CPTR_H__ */



Fichier CPtr.cxx

#if !defined __CPTR_HXX__
#define __CPTR_HXX__

#include "CPtr.h"

#define TEMPL template <class T> // class ou typename?
#define TEMPLINL TEMPL inline
#define CPTR std::CPtr <T>

TEMPLINL CPTR:: CPtr (void) { m_Ptr = new T(); }

TEMPLINL CPTR::~CPtr (void) { delete m_Ptr; }

TEMPLINL
T & CPTR::operator * (void) throw () { return *m_Ptr; }
TEMPLINL
const T & CPTR::operator * (void) const throw () { return *m_Ptr; }

TEMPLINL
T * CPTR::operator -> (void) throw () { return m_Ptr; }

TEMPLINL
const T * CPTR::operator -> (void) const throw () { return m_Ptr; }

#undef CPTR
#undef TEMPLINL
#undef TEMPL

#endif /* __CPTR_HXX__ */


Merci pour votre aide, j'ai rajouté quelques autres questions qui me trotter dans la tête...
mardi 27 mai 2008 à 13:07:19 | Re : Surcharge d'opérateur

luhtor

Réponse acceptée !
"pourquoi surcharge t'on les opérateur -> et * ?"
Pour pouvoir écrire ca:
CPtr<float> myPtr;
*myPtr = 4.0f;

ou ca:
CPtr<Une_classe_quelconque> myObject;
myObject->UneMethodeQuelconque();

" template <typename T> // Pourquoi ne met on pas template <class T> Quelle est la différence?"
Aucune différence ici.

"const T & operator * (void) const throw (); // non obligatoire??
const T * operator -> (void) const throw (); // non obligatoire??"
Si, c'est nécessaire, sinon un code de ce genre de pourra pas fonctionner:

void UneFonction(const CPtr<UneClasse> & _unObject)
{
    _unObject->UneMethode();
    // L'objet est ici (const CPtr<UneClasse>), donc l'opérateur "const T * operator -> (void) throw ();" n'est pas disponible. Seule la version "const" l'est.
}

#define TEMPL template <class T> // class ou typename?
Pareil: c'est équivalent ici.


Cette discussion est classée dans : const, void, ptr, operator, cptr


Répondre à ce message

Sujets en rapport avec ce message

ecrire dans un fichier [ par bellionl ] salut,voila depuis une semaine je tente de conprendre le c++ avec borland c++ builderle problème est quand je veut écrire dans un fichier.création du namespace [ par magic_Nono ] j'ai modifié mes classes n'étant jamais instanciées en namespaceet j'ai quelques intérogations :1>dans le header, pkoi le static ne passe pas ex : st erreur de compilation [ par cpp_devlopper ] bonjour,je suis un nouvel utilisateue de Microsoft visual studio, je l'ai essayé avec un programme "point.cpp"mais quand je le compile il ne reconnait Objet Point et Triangle pb a la compilation [ par fatcat ] Salut a tousVoila mon petit pbJe dois créer un programme qui effectue une triangulation de delauanay a partir d un fichier de Point avec 2 "double" co Template: Spécialisation partielle [ par luhtor ] Bonsoir, j'ai une classe définie comme suit: template class operator_binary_pow;et notamment une fonction membre: template inline _T operator_bina [debutant]Operation de chaine encore :s [ par firemax ] Bonjour Certain reconaitrons ce code (surtout vecchio56) mais voila ca marche toujours pas et je ne comprend pas :'( Please helllppp Code : #in malloc,calloc,realloc,free [ par halima ] Bonjour je dois ecrire les fonction malloc calloc realloc et free pour qu'ils agissent exactement comme ceux de la bibliothe (stdlib).le maximun de me classe matrice [ par pabreto ] bonjour!je dois écrire le matrice.c d'une classe de matrice à partir d'un matrice.h que l'on me donne et que je n'a pas le droit de modifier.voici mes qu'en pensez vous?? besoin d'aide!! lol [ par nelly77 ] bonjour je voudrai créer un tableau avec une liste de produits ayant des attributs comme  leur nom, leur etat dans un stock, la duree de fabrication e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales