/ / Exemple de surcharge de l'opérateur en C ++ - c ++

exemple de surcharge de l'opérateur en C ++ - c ++

J'ai besoin d'un exemple simple de surcharge de l'opérateur. sans utiliser class ou struct. ici j'ai essayé mais j'ai eu l'erreur:

#include <iostream.h>
int operator+(int a, int b)
{
return a-b;
}

void main()
{
int a,b,sum;
cin>>a>>b;
sum=a+b;  //Actually it will subtruct because of + operator overloading.
cout<<"Sum of "<<a<<" & "<<b<<"(using overloading)"<<sum;
}

Je reçois l'erreur suivante:

Compiling OVERLOAD.CPP:
Error OVERLOAD.CPP 3: "operator +(int,int)" must be a member function or have a parameter of class type

laissez-moi savoir est-il possible de surcharger l'opérateur (somme = a + b)? Si oui, s'il vous plaît, faites une correction dans ma source.

Réponses:

8 pour la réponse № 1

Il n'est pas possible de remplacer les opérateurs sur les types primitifs comme ints. Comme l'indique le compilateur, au moins un type de paramètre doit être une classe.


3 pour la réponse № 2

La surcharge d'opérateur est pour les types de classe seulement. opérateurs de type primitif ne sont pas définis par une fonction. Voir cette question pour plus de détails.

Si vous avez un type de classe, vous pouvez surcharger l'opérateur:

class A
{
int _num;

public:
A(int n) : _num(n) {}

int operator+(const int b) const
{
return _num + b;
}
}

int main()
{
A a(2);
int result = a + 4; // result = 6

return 0;
}

2 pour la réponse № 3

Il n'est pas possible de remplacer les opérateurs si les deux opérandes sont de type primitif. Compilateur disant qu'au moins un opérande devrait être objet d'une classe.

class Demo{
int n;
Demo(int n){
this.n = n;
}
int operator+(int a){
return n + a;
}
}


int main(){
Demo d(10);
int result = d + 10; //See one operand is Object
return 0;
}

Lorsque vous effectuez une surcharge d'opérateur en utilisant la fonction membre de classe, au moins le premier opérande doit être objet. Tu ne peux pas faire 10 - d. Pour ce faire, vous devez implémenter la surcharge de l'opérateur en utilisant friend fonction.

  friend int operator-(int a, Demo d){
return a - n;
}