【发布时间】:2011-12-23 21:37:21
【问题描述】:
我可以使用 c 的引用变量(例如,Customer &c)吗?如果有怎么办?这比使用指针变量更可取吗?
for(std::vector<Customer*>::const_iterator it = customers_.begin();
it != customers_.end() ; it ++)
{
Customer *c = (*it);
c->PrintName();
...
}
【问题讨论】:
-
为什么不直接使用迭代器呢?它->PrintName();
-
@Ferruccio:因为迭代器引用的是指针,而不是对象。你必须这样做
(*it)-> -
请注意,虽然指针可以处于无效或空状态(即它们是空指针),但引用不能。当然,情况似乎并非如此,因为您也没有在自己的代码中执行任何检查,但是指向指针的向量实际上并没有传达对其内容的承诺。如果它是对象的向量,您可以确定它们都是是有效的对象。
标签: c++ for-loop iterator reference