这不是关于为什么要编写这样的代码的问题,而是关于方法如何相对于它所绑定的对象执行的问题。
如果我有这样的结构:
struct F
{
// some member variables
void doSomething(std::vector<F>& vec)
{
// do some stuff
vec.push_back(F());
// do some more stuff
}
}
我像这样使用它:
std::vector<F>(10) vec;
vec[0].doSomething(vec);
如果push_back(...)
indoSomething(...)
导致向量扩展会发生什么?这意味着vec[0]
它将在执行其方法的过程中被复制然后删除。这可不好。
有人可以解释这里到底发生了什么吗?
- 程序会立即崩溃吗?该方法是否只是尝试对不存在的数据进行操作?
- 该方法是否对其对象进行“孤立”操作,直到遇到诸如更改对象状态之类的问题?
我对方法调用如何与关联对象相关感兴趣。