私は、メンバーアクセス演算子を除いて、ほとんどの演算子のオーバーロードを理解し->
、.*
、->*
など
特に、これらの演算子関数に渡されるものと返されるものは何ですか?
演算子関数(例operator->(...)
)は、どのメンバーが参照されているかをどのようにして知るのですか?わかる?それも知る必要がありますか?
最後に、考慮に入れる必要があるconstの考慮事項はありますか?たとえば、のようなものをオーバーロードする場合operator[]
、通常、constバージョンとnon-constバージョンの両方が必要になります。メンバーアクセスオペレーターにはconstバージョンとnon-constバージョンが必要ですか?
const
およびの非const
バージョンは必須でoperator->
はありませんが、両方を提供すると便利です。
->*
および.*
。実際、それらについても触れられていません!FAQに載ることはまれだと思いますが、この質問をFAQから喜んでリンクします。FAQの真似としてこれを閉じないでください!