我想知道,如果使用对象obj的这两种方式之间有什么区别。两个例子中的内存会发生什么?
vector
作为float
类型的参数。此向量的维度不小于 9000 元素。MyObject obj;
for(int i = 0; i < n; i ++)
{
obj.func(vector<float>);
}
for(int i = 0; i < n; i ++)
{
MyObject obj;
obj.func(vector<float>);
}
答案 0 :(得分:-1)
当您在循环内声明对象时,将在每次迭代时创建一个新对象,并在每次迭代结束时销毁该对象。这是因为该对象在{}
内有一个范围。
当你在外面声明它时,会创建一个对象并使用它,但当你把它放在一个循环中时,会在每次迭代时创建并销毁一个新对象,这会影响速度。
也就是说,当你使用
时MyObject obj;
for(int i = 0; i < n; i ++)
{
obj.func(vector<float>);
}
你只有一个物体。但是当你使用
时for(int i = 0; i < n; i ++)
{
MyObject obj;
obj.func(vector<float>);
}
您创建并销毁n
个对象。这将增加执行时间。所以,最好使用第一个。