从答案中,@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 是一种设计模式,但无论如何我都想不出我必须在这里使用这样的设计模式。
任何人都可以使用具体的例子证明代理是必须的吗?