class x{
public:
x( moveClass&& item) {
std::cout << 123 << std::endl;
}
x() = default;
};
int main(){
x(x());
}
如上的代码, 不应该输出123
吗, 为什么什么都没有输出... 这种情况到底算调用了哪种构造方法.
大家讲道理2017-04-17 14:34:10
コードは を出力すべきではありません。これは関数宣言であり、 を呼び出しません。私の理解では、移動コンストラクターは一時的なコンストラクターとデストラクターの呼び出しを減らすために右辺値で使用され、右辺値を使用してコンストラクターを呼び出すと、移動コンストラクターを呼び出すことができます。 リーリー 上記のコードでは、右辺値を渡しているため、コンストラクターが呼び出されます。 http://stackoverflow.com/ques... ここでは、移動コンストラクターをいつ使用するかについて説明します。 タイトルタイトル! ! !大きな発見でした。情報を確認して自分で実験したところ、 が関数宣言であることがわかりました。 の下に別の を宣言すると、コンパイル時と実行時にエラーが報告されます。以下は私のテスト コードです。これを試してみることもできます。そのため、あなたの行では move コンストラクターが呼び出されません。 リーリー