En fait ce n'est pas un opérateur de déferencing comme dans * ptr! C'est en fait un opérateur tel qu'un opérateur de multiplication. Voici un exemple simple
#include <iostream>
using namespace std;
struct Int{
int val;
Int(const int val = 0) : val(val){}
int operator*(const Int& number)const{
return val * number.val;
}
};
int main(){
Int n(4), m(5);
cout << n * m << endl; //use the operator*() implicitly
cout << (n.operator*(m)) << endl; //use the operator* explicitly
}
Pour définir un opérateur de défreinage, son prototype serait operator *(). Regardez here pour plus d'informations. Here est un code à suivre en direct.
La plupart des opérateurs surchargés peuvent être définis comme des fonctions non membres, et unary * ne fait pas exception. http://ideone.com/sPixf Si c'est une fonction membre, oui, c'est binaire *, mais comme indiqué unaire * est plus probable. –
Oh attends oui tu as raison, je ne me suis pas rendu compte que c'était une fonction régulière. – dchhetri