what is operator overloading in c++? code example
Example 1: c++ overloaded == operator
#include <iostream>
#include <string>
class Car
{
private:
std::string m_make;
std::string m_model;
public:
Car(const std::string& make, const std::string& model)
: m_make{ make }, m_model{ model }
{
}
friend bool operator== (const Car &c1, const Car &c2);
friend bool operator!= (const Car &c1, const Car &c2);
};
bool operator== (const Car &c1, const Car &c2)
{
return (c1.m_make== c2.m_make &&
c1.m_model== c2.m_model);
}
bool operator!= (const Car &c1, const Car &c2)
{
return !(c1== c2);
}
int main()
{
Car corolla{ "Toyota", "Corolla" };
Car camry{ "Toyota", "Camry" };
if (corolla == camry)
std::cout << "a Corolla and Camry are the same.\n";
if (corolla != camry)
std::cout << "a Corolla and Camry are not the same.\n";
return 0;
}
Example 2: c++ operator overloading
class Money
{
public:
Money & operator += (const Money &rhs);
}
Money& Money :: operator += (const Money &rhs)
{
return *this;
}
Example 3: Operator overloading in C++ Programming
#include <iostream>
using namespace std;
class Test
{
private:
int count;
public:
Test(): count(5){}
void operator ++()
{
count = count+1;
}
void Display() { cout<<"Count: "<<count; }
};
int main()
{
Test t;
++t;
t.Display();
return 0;
}
Example 4: operator overloading in c++
Box operator+(const Box&);
Example 5: c++ overload operator
#include <iostream>
class ExampleClass {
public:
ExampleClass() {}
ExampleClass(int ex) {
example_ = 0;
}
int& example() { return example_; }
const int& example() const { return example_; }
ExampleClass operator+ (const ExampleClass& second_object_of_class) {
ExampleClass object_of_class;
object_of_class.example() = this -> example() + second_object_of_class.example();
return object_of_class;
}
private:
int example_;
};
int main() {
ExampleClass c1, c2;
c1.example() = 1;
c2.example() = 2;
ExampleClass c3 = c1 + c2;
std::cout << c3.example();
}
Example 6: operator ++ overloading c++
class Point
{
public:
Point& operator++() { ... }
Point operator++(int) { ... }
friend Point& operator++(Point &p);
friend Point operator++(Point &p, int);
};