2. 审议法典的一部分:
class Foo
{ // ...
std::vector<Bar> bars;
};
如果我暴露了整个集装箱,或者如果我暴露在<条码>上。 d 自动取款机类别和文字改编器方法(begin()
,end(
,size(
)及我需要的东西)?
如果回答是
2. 审议法典的一部分:
class Foo
{ // ...
std::vector<Bar> bars;
};
如果我暴露了整个集装箱,或者如果我暴露在<条码>上。 d 自动取款机类别和文字改编器方法(begin()
,end(
,size(
)及我需要的东西)?
如果回答是
除非你绝对需要暴露集装箱,否则你只能暴露器或导管(和照发器类型)。
这样做可以避免在改变执行细节时打破其他守则,并遵循隐藏/封顶的信息指南。
如果你想要遵循良好的设计线,
贵方的地图应是私人的或受保护的, 它希望
class Foo
{
public:
typedef std::vector<Bar>::const_iterator FooIterator;
FooIterator begin()
{
return bars.begin();
}
FooIterator end()
{
return bars.end();
}
protected:
std::vector<Bar> bars;
};
int main()
{
Foo obj;
for(obj::FooIterator itr=obj.begin();itr!=obj.end();itr++)
{
}
}
答案:
贵类用户需要了解内部<条码>查询/代码>多少?
举例说明<代码>stack 标准图书馆课程。 它在内部使用标准集装箱,但它有t even 暴露了集装箱。 它暴露了推波助澜,几乎没有其他办法。
班级的使用者不必知道任何其他东西。 班次的使用者可以进入中间点。 如果你这样做,那就不再是一个障碍。
通常,班级的使用者实际上比老板更需要。 如果您的<代码>Foo 类别暴露begin(
和end(<>/code>,我需要做些什么? 我能够随时查阅内部数据结构的所有要素。 我可以修改其中每一项,或阅读其中每一项。
我是否还需要能够插入/删除内容? 也许,如果是的话,我是否应该直接在病媒上或通过你的适应方法这样做? 它取决于。 标的是什么? 把物体直接添加到<条码>所拥有病媒中是否有意义? Foo 在<代码>上添加物体也是有益的。 Foo 反对,让它代表它喜欢的任何内部执行?
It depends.
If by changing the state of a pub in the container you are changing the state of the object foo then you should not expose the container (as you may want to limit accesses at a later stage, or make a note of accesses).
另一方面,如果foo物体仅仅是一个也拥有病媒的美化集装箱,那么病媒可能暴露在K(注号)。 由于暴露了病媒,你对foo<>/strong>的用户具有严格的约束力,因此,在后一阶段将其改为另一个集装箱类型可能更加困难。
如果你只需要从病媒中read<>em>,就会暴露出......begin() end()和erator。 如果你实际上需要增加/消除数据或改变数据,就会暴露整个病媒。
Don t 暴露了不为人所知,用微薄的手法对电话进行总结,并检查一些明显的情况,例如,无约束和指数化,以及类型和疗效检查。
在该网站上,看到其职务的M$的密码打电话到ZD网,作为一周的拼凑,就见了恐怖。 如果你必须写上手提错的零时返回,并把它带往其他科,那么你可能会听从第8节的 ha。