だから私はいくつかのコードを書いていました、そして私はこのようなものを持っていました:
class Box
{
private:
float x, y, w, h;
public:
//...
Rectangle & GetRect( void ) const
{
return Rectangle( x, y, w, h );
}
};
その後、いくつかのコードで:
Rectangle rect = theBox.GetRect();
これは私のデバッグビルドでは機能しましたが、リリースでは、参照によってそのRectangleを返す「問題」がありました。基本的に初期化されていない長方形を取得しました。Rectangleクラスには、=演算子とコピーコンストラクターがあります。なぜこれが壊れたのかを説明することなく、変数にコピーを割り当てる目的で、参照によって(新しい)オブジェクトを返す正しい方法に実際に興味があります。私はばかげているだけですか?それは行われるべきではありませんか?ポインタを返し、割り当て時に逆参照できることはわかっていますが、そうではありません。私の一部は、値で返すとオブジェクトの冗長コピーが発生するように感じます-コンパイラはそれを理解して最適化しますか?
ささいな質問のようです。何年にもわたるC++コーディングの後で、これがわからないので、ほとんど恥ずかしい思いをします。誰かが私のためにこれを片付けてくれることを願っています。:)