Использование Proxy Pattern реализации перегрузки оператора по типу возвращаемого значения?

Из ответа, @James Kanze покажет реализацию перегрузки операторов по типу возвращаемого значения:

class Proxy
{
    My const* myOwner;
public:
    Proxy( My const* owner ) : myOwner( owner ) {}
    operator int() const
    {
        return myOwner->getInt();
    }
    operator char() const
    {
        return myOwner->getChar();
    }
};

Затем я реализую свой без прокси:

using namespace std;
#include <iostream>
#include <string>
const class Czxyl
{
private:
    int a = 1;
    char b = 'c';
    float c = 1.1;
public:
    Czxyl() = default;
    constexpr Czxyl(int a, char b, float c) : a{ a }, b{ b }, c{ c } {}
    constexpr operator int() const { return a; }
    constexpr operator char() const { return b; }
    constexpr operator float() const { return c; }
    Czxyl get() const { return *this; }
    //Czxyl operator() () const { return *this; }
} czxyl;

int main()
{
    int a = czxyl.get();
    char b = czxyl.get();
    float c = czxyl.get();
    std::cout << a << "\n" << b << "\n" << c << "\n";
}

Я не могу понять, почему использовать прокси?

Я знаю, что Proxy - это шаблон проектирования, но все равно не могу придумать, в каком случае я должен использовать такой шаблон проектирования.

Кто-нибудь может доказать, что Прокси является обязательным здесь, используя конкретные примеры?

0 ответов

Другие вопросы по тегам