最初に私のコードを投稿させてください:
void Fun(short &s){}
void FunCon(const short &s){}
int main()
{
int iTest = 20;//note: iTest is int but parameter of Fun is "short &"
Fun(iTest);//error, I know there is a temp variable(typecast)
FunCon(iTest);//ok
return 0;
}
Fun(iTest);
新しい一時変数(タイプキャスト)が生成されることはわかっていますが、一時変数は定数でしょうか?
いいえの場合: temp 変数を渡せないのはなぜですか?short &
はいの場合: 次のような別のコードがあります。
class MyObject{
public :
void F(){}
};
MyObject MOCreator(){
return MyObject();
}
int main()
{
MOCreator().F();//OK
return 0;
}
によって返される一時変数MOCreator()
が定数の場合、一時変数が非定数メンバー関数を呼び出すことができるのはなぜですか?
私の質問は:</p>
1) C++の一時変数と定数の違いは何ですか?
2) Thinking in C++ (page 507)に一文があります。文は正しいですか?なぜ?:
一時オブジェクトは自動的にconstになります
誰かから簡単な質問をされましたが、その質問を解決する途中でさらに質問に遭遇しました。私はそれらが非常に一般的な質問である可能性があることを知っており、ネットで長い間検索しています. また、さまざまな回答をいただきました。しかし、私は今それについてもっと混乱しています。
前もって感謝します。