/ / Приклад оператора перевантаження в C ++ -c ++

Приклад перевантаження оператора в C ++ -c ++

Мені потрібен хороший простий приклад перевантаження оператора. без використання класу або структури. тут я спробував отримати помилку:

#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;
}

я отримую таку помилку:

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

дайте мені знати, чи можливо перевантаження оператора (sum = a + b)? якщо так, будь ласка, внесіть виправлення в моє джерело.

Відповіді:

8 для відповіді № 1

Неможливо переопределити оператори на примітивних типах, як ints. Як стверджує компілятор, принаймні один тип параметра "s повинен бути класом.


3 для відповіді № 2

Перевантаження оператора призначене лише для класів. Оператори примітивного типу не визначаються функцією. Подивитися це питання для подробиць.

Якщо у вас є тип класу, ви можете перевантажити оператора:

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 для відповіді № 3

Неможливо переопределити оператори, якщо обидва операнда мають примітивний тип. Компілятор, який говорить, що принаймні один операнд повинен бути об'єктом класу.

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;
}

Коли ви виконуєте перевантаження оператора за допомогою функції клас-члена, atleast перший операнд повинен бути об'єктом. Ви не можете зробити 10 - d. Для цього потрібно виконати перевантаження оператора за допомогою friend функція

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