私は長い間C++をプログラミングしてきたので、これを知らないのはばかげていますが...
私はパフォーマンスが重要なコードを頻繁に書きますが、そのときはできるだけヒープ割り当てを避けるようにしています。そのために、個々のオブジェクトごとに new と delete を呼び出す代わりに、事前に割り当てられた小さなオブジェクトの配列を再利用することがよくあります。
そのような場合、私は通常これを行います:
class MyClass
{
private:
int x, y;
public:
inline void Set(_x, _y) { x = _x; y = _y; }
};
...
MyClass &objectToReuse = someArray[someIndex];
objectToReuse.Set(someXValue, someYValue);
ただし、この見栄えの良いバージョンでも同じコードが生成されるのではないかと思います。
class MyClass
{
private:
int x, y;
public:
inline MyClass(_x, _y) : x(_x), y(_y) {}
};
...
MyClass &objectToReuse = someArray[someIndex];
objectToReuse = MyClass(someXValue, someYValue);
最新の C++ コンパイラはこれを「取得」しますか、それとも一時オブジェクトを構築してからコピーしますか?