C 中代理类的作用
在软件工程中,代理类是一个用于中介对现有对象的访问的概念,称为“主题”。代理类提供了一个改变的接口,允许与主体进行受控且通常有限的交互。
代理类的目的
代理类的创建有多种原因,包括:
示例:二进制数字限制
考虑以下示例:
struct array1 { int mArray[10]; int &operator[](int i) { /// what to put here } };
在此示例中,我们要修改 Array 类,使其只能包含二进制数字(1 或 0)。直接在数组的operator[]方法中实现这个方法是不可行的,因为它无法访问存储的值。
为了解决这个问题,我们可以引入一个代理类:
struct aproxy { aproxy(int& r) : mPtr(&r) {} void operator = (int n) { if (n > 1 || n < 0) { throw "not binary digit"; } *mPtr = n; } int * mPtr; }; struct array { int mArray[10]; aproxy operator[](int i) { return aproxy(mArray[i]); } };
中在这种情况下,代理类(aproxy)检查无效值(非二进制数字)并在遇到时抛出异常。通过使数组的operator[]返回Proxy类的实例,我们强制执行二进制数字限制,同时仍然允许访问数组元素。
以上是代理类如何在数组中强制执行二进制数字限制?的详细内容。更多信息请关注PHP中文网其他相关文章!