The operators << and >> are commonly used as “write” and “read” operators:
std::ostream overloads << to write variables to the underlying stream (example: std::cout)std::istream overloads >> to read from the underlying stream to a variable (example: std::cin)The way they do this is similar if you wanted to overload them “normally” outside of the class/struct, except that specifying the arguments are not of the same type:
std::ostream) passed by reference, to allow chaining (Chaining: std::cout << a << b;). Example: std::ostream&lhs would be the same as the return typerhs is the type you want to allow overloading from (i.e. T), passed by const& instead of value for performance reason (rhs shouldn’t be changed anyway). Example: const Vector&.Example:
//Overload std::ostream operator<< to allow output from Vector's
std::ostream& operator<<(std::ostream& lhs, const Vector& rhs)
{
lhs << "x: " << rhs.x << " y: " << rhs.y << " z: " << rhs.z << '\\n';
return lhs;
}
Vector v = { 1, 2, 3};
//Now you can do
std::cout << v;