什么是C ++中的代理类?
在这里,我们将看到什么是C++中的代理类。Proxy类基本上是Proxy设计模式。在这种模式下,对象为另一个类提供了修改后的接口。让我们来看一个例子。
在此示例中,我们要创建一个只能存储二进制值[0,1]的数组类。这是第一次尝试。
范例程式码
class BinArray {
int arr[10];
int & operator[](int i) {
//在这里放一些代码
}
};在此代码中,没有条件检查。但是,如果我们放arr[1]=98之类的东西,我们希望operator[]抱怨。但这是不可能的,因为它是在检查索引而不是值。现在,我们将尝试使用代理模式解决此问题。
范例程式码
#include <iostream>
using namespace std;
class ProxyPat {
private:
int * my_ptr;
public:
ProxyPat(int& r) : my_ptr(&r) {
}
void operator = (int n) {
if (n > 1) {
throw "This is not a binary digit";
}
*my_ptr = n;
}
};
class BinaryArray {
private:
int binArray[10];
public:
ProxyPat operator[](int i) {
return ProxyPat(binArray[i]);
}
int item_at_pos(int i) {
return binArray[i];
}
};
int main() {
BinaryArray a;
try {
a[0] = 1; // No exception
cout << a.item_at_pos(0) << endl;
}
catch (const char * e) {
cout << e << endl;
}
try {
a[1] = 98; // Throws exception
cout << a.item_at_pos(1) << endl;
}
catch (const char * e) {
cout << e << endl;
}
}输出结果
1 This is not a binary digit
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短