タグ付けされた質問 「overload」

15
演算子のオーバーロードに対する引数を理解していません[非公開]
私は彼が言うジョエルの記事の一つを読んだ: 一般的に、私は物事を隠す言語機能が少し怖いことを認めなければなりません。コードが表示されたら i = j * 5; …Cでは、少なくとも、jに5が乗算され、結果がiに格納されていることがわかります。 しかし、C ++で同じコードスニペットを見ると、何もわかりません。なし。C ++で実際に何が起こっているのかを知る唯一の方法は、iとjの型を調べることです。これは、jがoperator*オーバーロードされた型であり、乗算しようとするとひどく機知に富んだ動作をするためです。 (エンファシス鉱山。)物事を隠す言語機能が怖い?どうしてそれが怖いの?物事を隠すこと(抽象化とも呼ばれます)は、オブジェクト指向プログラミングの重要なアイデアの1つではありませんか?methodを呼び出すたびにa.foo(b)、それが何をするのかまったくわかりません。あなたは他のどこかで宣言されるかもしれないタイプaとbは何かを見つけなければなりません。それでは、オブジェクト指向プログラミングはプログラマからあまりにも多くのことを隠してしまうので、オブジェクト指向プログラミングを廃止すべきでしょうか? そして、演算子のオーバーロードをサポートしていない言語で記述する必要があるかもしれないとはどうj * 5違いj.multiply(5)ますか?繰り返しになりますが、loとbeholdは、非常に機知に富んだ何かを行うメソッドを持つ型である可能性があるためj、multiplyメソッドの型とピークをメソッド内で調べる必要があります。jmultiply 「ムアハハ、私はメソッドmultiplyに名前を付ける邪悪なプログラマーですが、実際にそれが行うことは完全に曖昧で直感的ではなく、物事を増やすこととはまったく関係ありません。」それはプログラミング言語を設計するときに考慮しなければならないシナリオですか?次に、誤解を招く可能性があるという理由で、プログラミング言語の識別子を放棄する必要があります! メソッドが何をするのか知りたい場合は、ドキュメントを見るか、実装の内部を覗いてください。演算子のオーバーロードは単なる構文上のシュガーであり、それがゲームをどのように変えるかはわかりません。 教えてください

6
マイナス記号「-」が一般にプラス記号と同じように過負荷にならないのはなぜですか?
プラス記号+は、加算と文字列の連結に使用されますが、そのコンパニオンであるマイナス記号、は-、通常、文字列のトリミングや減算以外の場合には表示されません。その理由や制限は何でしょうか? JavaScriptの次の例を検討してください。 var a = "abcdefg"; var b = "efg"; a-b == NaN // but a+b == "abcdefgefg"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.