7

ラッパーを作成していてint、すべての演算子のオーバーロードを提供する必要があるとします。作成者はすべてをリストする必要がありますか、または作成者が提供したものに基づいて自動生成できますか? コンパイラは、既存の演算子から新しい自動定義演算子を推測できますか?

を定義するoperator==と、operator!=自動的に が表示されますか? それともその逆?

を定義すると、無料operator++()で入手できますか? operator++(int)それともその逆?

+=タイプビジネスはどうですか?operator+の既存の定義をと組み合わせてoperator=を生成できoperator+=ますか? 理論的には可能なはずですが、そうですか?

>=toなどについても同じ質問ですが、、、 の<定義を完全に列挙する必要がありますか?>>>=<=

4

4 に答える 4

3

いいえ。

C++にはコア言語に推論規則がないため、定義でさえ+何も想定していないと言い+=ます... それらは (言語に関する限り) まったく無関係です。

標準ライブラリの (左ビットシフト演算子) が「ストリームへの出力」を意味するようにオーバーロードされていることを考慮してください<<...見た目と、適切な優先順位と結合性のためです。

于 2015-09-28T06:29:45.050 に答える