This line is important, which I will talk about:
cout<<"proxied:"<<abc[1].a()<<" "<<abc[1].b()<<"\n";
When you call abc [1], this is the public abc_t method. It's really.
It returns proxy_t. Although the declaration of this class (proxy_t) is not defined, you are not actually using this return variable to create a new object. If you did the following, this would not compile.
proxy_t p = abc[1];
, proxy_t, , . - , ( ).
proxy_t , , - , abc_t. , , - / / , .
. ( ). . , proxy_t:: a() , CAN , main proxy_t.