元<型名 T>类 独包 止{ 独针<T>h;//包装一个 空 检查()常{ 如(h==空针)抛 无效实参("无效"); 如(h->错误)抛 无效实参(h->错误串); }//这是h内部有`错误`. 公: T()=删; T(常 T&)=删; T&符号=(常 T&)=删; //其余皆删 T(T&&)=默认; T&符号=(T&&)=默认; //只能移动 T(T*o):h(o){}//保存指针 符号 极(){中 h!=空针&&!h->错误;} T*符号()(){中 取();} //重载(),就是取(),多了检查步骤 T*取(){检查();中 h.取();}//取原指针 //多加了一步检查 极 符号==(常 T&o)常{中 o.h==h;} 极 符号!=(常 T&o)常{中 o.h!=h;} T*符号->()常{检查();中 h.取();} //重载->,这里也多检查了一步 }; //只多做一步,类似这里的`检查`,但就得重新写类. 内联 独包<环境>安连接(常 符*ip,整 端口){ 中 连接(ip,端口); }//原来直接返回(环境*),现在用`独针<环境>`了. 空 主(){ 动 c=安连接(ip,端口); 回复 r=命令(c(),"取标识"); //这个命令也得用相应的安全版本. 打印(r->串); }//通过RAII保证安全,重载指针访问符保证方便,访问指针时做检查保证不出错,避免外部检查.还可加额外控制策略如写日志.