問題のコードは次のとおりです。型キャストとの間の関連性。 Visual Studioで
void SomeClass::Init(const vector<string>& args) {
int argc = (int)args.size();
//...
}
私はWindows 7 64ビット版Visual Studio 2015 Update 3で動作します。
私の質問は:オペレータの結合性の私の理解によると、型キャスト(int)とメンバーセレクタ。 (C++ Primer、5edから抜粋したスクリーンショットを参照してください)、評価順序は結合性によって決定する必要があります。しかし、このレベルの連想は残されます。つまり、式は左から右に評価されます。したがって(int)argsが最初に評価され、argsがintに変換されます。 intバージョンのargsは存在しないsize関数を呼び出そうとし、コンパイルエラーを引き起こすはずです。しかし、Visual Studio 2015はエラーを報告せず、期待どおりに動作します。右側の式は、size()関数を最初に呼び出し、返された値をintに変換します。どうして?私の連合性の理解が間違っているのですか、何か不足していますか?ご協力ありがとうございました。
あなたが使用しているのは、関数キャストではなく、メンバーアクセス演算子と優先順位が異なるCスタイルのキャストです。 [ここ](http://en.cppreference.com/w/cpp/language/operator_precedence)を参照してください。 – songyuanyao
@songyuanyao:ありがとう。あなたが正しいです。私の質問に対する答えにあなたの考えを書いてもいいですか? – user5280911