3

catchClass(aClass&)以下のコードで、最初の呼び出しが解決され、2 番目の呼び出しでパラメーターとして一時的に指定されるのはなぜですか?catchClass(const aClassCatcher&)

#include <iostream>

using namespace std;

class aClassCatcher{};

class aClass{
public:
    operator aClassCatcher(){
        return aClassCatcher();
    }
};

void catchClass(aClass&){
    cout << __FUNCSIG__ << endl;
}
void catchClass(const aClassCatcher&){
    cout << __FUNCSIG__ << endl;
}

int main()
{
    aClass aC;
    catchClass(aC); // calls catchClass(aClass&)

    catchClass(aClass()); // calls catchClass(const aClassCatcher&)

}

どこでこれを見つけたのか疑問に思っている方のために説明すると、Dobb's の記事で説明されているように、ムーブ コンストラクターを理解しようとしています。

4

1 に答える 1