Эта функция
bool operator==(str_array a, str_array b);
вводит перегруженный оператор равенства (operator ==) для объектов типа str_array
.
, поэтому вы можете сравнивать объекты типа twp так, как вы сделать с фундаментальными типами, как, например,
if ( a == b ) { /* do something */ }
Компилятор заменит выражение a == b
для вызова перегруженной operator ==
(функция).
Вот демонстрационная программа с два перегруженных оператора: operator ==
и operator <<
.
#include <iostream>
#include <iomanip>
class A
{
public:
explicit A( int x = 0 ) : x( x ) {}
friend bool operator ==( const A &a1, const A &a2 )
{
return a1.x == a2.x;
}
friend std::ostream & operator <<( std::ostream &os, const A &a )
{
return os << a.x;
}
private:
int x;
};
int main()
{
A a1( 10 ), a2( 10 ), a3( 20 );
std::cout << "a1 = " << a1 << '\n';
std::cout << "a2 = " << a2 << '\n';
std::cout << "a3 = " << a3 << '\n';
std::cout << "a1 == a2 is " << std::boolalpha << ( a1 == a2 ) << '\n';
std::cout << "a2 == a3 is " << std::boolalpha << ( a2 == a3 ) << '\n';
std::cout << "a1 == a2 is " << std::boolalpha << operator ==( a1, a2 ) << '\n';
return 0;
}
Его вывод
a1 = 10
a2 = 10
a3 = 20
a1 == a2 is true
a2 == a3 is false
a1 == a2 is true