0

次のコード:

#include <iostream>

using namespace std;

struct A {
    A(int a) { cout << "cast "; }
    A(const A& a) { cout << "copy " ;}
};

int main () {
    int x = 0;
    A a = x;
    return 0;
}

出力はcastになりますが、出力は次のようになると予想していましたcast copy。それはコンパイラの最適化ですか、それとも何が起こっているのかの単純な誤解ですか?

前もって感謝します!

4

1 に答える 1

0

ここでは、コンストラクターを介したからintへの暗黙的な変換が行われています。AA(int i)

したがって、コンパイラは何らかの最適化を行っていると思います。

最初のコンストラクターにキーワードを使用するexplicitと、コンパイルされません。

于 2013-07-26T11:30:42.903 に答える