次のシナリオを想像してください。
class ABC
{
public:
int abc;
};
ABC& modifyABC(ABC& foo)
{
foo.abc+=1337;
return foo;
}
void saveABC(ABC& bar, std::vector<ABC*>& list)
{
list.push_back(&modifyABC(bar));
}
int main()
{
ABC foobar;
std::vector<ABC*> ABCList;
saveABC(foobar,ABCList);
return 0;
}
modifyABC() は、ABC への参照を返します (これは、内部的にはある種のポインタでもあります)。& 演算子の「アドレス」は、参照のアドレスへのポインタを返しますか、それとも参照の背後にある実際のオブジェクトですか?