proxy pattern in C++

```
#include <iostream>
using namespace std; 

class Subject {
public:
	virtual void request() = 0;
	virtual ~Subject() {}
};
 
class RealSubject : public Subject {
public:
	void request() { 
		cout << "RealSubject.request()" << endl; 
	}
};
 
class Proxy : public Subject {
private:
	Subject* realSubject;
public:
	Proxy() : realSubject (new RealSubject()) {}
	~Proxy() { 
		delete realSubject; 
	}
	void request() { 
		realSubject->request(); 
	}
};
 
int main() {
	Proxy p;
	p.request();
}
```