Задача 4 от Домашното
Здравейте... стигнах до някакво решение на задачата, но ми е много чудно една част от кода, какво точно прави. Ето линк, към условието на домашното: https://judge.softuni.bg/Contests/Compete/DownloadResource/3940 
Ето го целия код на програмата: 
 
#include "ResourceType.h"
#include <string>
#include <istream>
#include <ostream>
using namespace std;
namespace SoftUni{
class Resource
{
private:
    int id;
    ResourceType type;
    string link;
public:
    Resource() {}
    Resource(int id, ResourceType type, std::string link)
            : id(id)
            , type(type)
            , link(link) {}
    int getId() const
    {
        return this->id;
    }
    ResourceType getType() const
    {
        return this->type;
    }
    string getLink() const
    {
        return this->link;
    }
    bool operator<(const Resource& other) const
    {
        return this->id < other.id;
    }
};
ostream& operator<<(ostream& out, const Resource& r)
{
    return out << r.getId() <<" "<< r.getType() <<" "<< r.getLink();
}
istream& operator>>(istream& in, Resource& r)
{
    int id;
    string typeString;
    string link;
    in >> id >> typeString >> link;
    ResourceType types;
    if (typeString == "Presentation") {
        types = ResourceType::PRESENTATION;
    }
    else if (typeString == "Demo") {
        types = ResourceType::DEMO;
    }
    else if (typeString == "Video") {
        types = ResourceType::VIDEO;
    }
    r = Resource(id, types, link);
    return in;
}
}
Въпросът ми е, какво прави следния operator overload: 
 
    bool operator<(const Resource& other) const
    {
        return this->id < other.id;
    }
намиращ се вътре в класа Resource.
Като цяло стигнах до някакво решение, но програмата ми изпищя, че тази част липсва и я добавих, но не съм абсолютно наясно какво точно прави.