6
class A;
const A getA();

A - コピー不可、移動可能。

getA()A- as を構築して返しますconst

これを行う方法?

const A a = getA();

これしかできない。

const A& a = getA();
4

1 に答える 1

10

として値で返さないでくださいconst。あなたが何かを返すとき、あなたはこう言っています。メソッドの呼び出し元がそれを変更したくない場合は、const上で示したように として保存できます: const A a = getA();ただし、(メソッドとして) オブジェクトがオブジェクトであるかどうかを呼び出し元に伝えるべきではありconstません (戻り値はオブジェクトです)。

戻り値が の場合、それを新しいオブジェクトに入れるconstことはできないため、ムーブ コンストラクターは考慮されません。move唯一のオプションはコピーですが、あなたの場合はコピーできないオブジェクトであるため、これも機能しません。戻り値が定数でない場合は、そこから移動でき、必要な動作が得られます。

于 2013-06-12T12:20:07.080 に答える