转载

用 using 声明来安全降维

C++ 命名空间是可以嵌套的,且嵌套了多少次空间,其就可谓有多少「维」,然而同一个有限的标识符集合在空间中就变得越来越稀疏;命名空间可以并列,从长远来看标识符会变得很多,顾及起来一样不胜其烦。这时 可以用 using 声明来安全降维,减少代码复杂度。

我最近就在 Caffe 学到了这么一种手法:

namespace caffe {  using boost::shared_ptr;  } 

它直接把 boost::shared_ptr 嵌进了命名空间 caffe , 现在我们只要知道有 caffe::shared_ptr 这么一个 ABI 接口存在,不用再纠结它是 stdboost 中的哪一个了。 接口使用者无需过多操心智能指针的管理,开发者也有章可循,多好。

话说回来,using 声明可谓只在原线性空间增加了一个有效的基向量, using 指示却相当于直接把多个线性空间喀嚓地合并起来 ,容易变得线性有关,即标识符产生歧义。高下立判,小用 using 声明怡情,强用 using 指示灰飞烟灭。

Written with StackEdit .

正文到此结束
Loading...