dim*_*mba 4 c++ encapsulation stl
我有一个类具有私有数据成员的类vector< A*>.
该类有两个实际使用的公共方法vector<A*>::size_type:
我可以在类的公共部分添加以下typedef:
typedef vector :: size_type SIZE_t;
但恕我直言,它暴露了太多关于类实现的细节.
另一种方法是使用size_t.
你怎么看?
我会在类中使用typedef.原因是,对于std::vector,大小类型是std::size_t,但如果您稍后更改代码以使用其大小类型未std::size_t重新定义的容器(手动滚动),则typedef就足够了.
使用该typedef不会暴露任何实现细节,实际上它有助于封装.typedef中的重要元素是本地名称,而不是它定义的名称.
for ( mytype::size_type i = 0; i < myelement.size(); ++i )
Run Code Online (Sandbox Code Playgroud)
在上面的for循环中,用户代码不知道size_type是有符号还是无符号类型,它只是起作用.您可以更改您的实现,只要您更新typedef,之前的代码将编译而没有签名/未签名的比较警告.typedef实际上有助于封装.