Javaやphpはインターフェイス、RubyはMix-inがある。
+ や - などの演算子に別の動作を与える演算子オーバーロードはなくてもプログラムの記述はまったく困らない。
C言語 で
a = b + c;
と書いた場合は解釈は足し算しかない。c + b と書いても同じ。
C++ で
a = b + c;
と書いた場合、b と c が何かでまったく動作が変わる。逆にして c + b は動作が違う可能性がある。つまりこの行だけ見てもどのような動作になるのか予測できない。
Java はできない
PHP はできない
Python はできる
Ruby はできる
クラスの保護メンバー変数に、アクセスできる関数のこと。通常、privateメンバ変数はクラス内からアクセスできないが、フレンド関数はそのprivateな変数にアクセスできる。
どういうふうに動作が変わるの?
互換性のために過去の機能を切りづらいのと 歴史的に熟考がまだ足りていなかった頃に設計されてしまったのと それら積み重ねで罠の多い言語になってしまったけど、 どこかで、モダ...
多重継承も演算子オーバーロードもフレンド関数も、それが便利で効率的だから考案されたのでしょ? 多重継承ができれば、少ないコード数でプログラムが作れるとか、 演算子オーバ...
演算子の多重定義のないJava BigDecimal result = new BigDecimal("100000").multiply(new BigDecimal("99999.55")).add(new BigDecimal("3333333333")); 多重定義のあるC++ BigDecimal result = BigDecimal("100000") * "99999.55" / "3333333333";
Javaの方が分かりやすい!
プログラムは文書的に書いたほうがわかりやすいと思う人がいて、昔から試されてきたけどはやらないね。COBOLとか。 A)面積=幅×高さ÷2 B)幅と高さを掛けて2で割ったものを面積とす...
friend関数(protected関数)は普通に使うやろ… 抽象クラス書いたことあらへんのかいな。
friend関数とpublicなstatic関数。 static関数は、foo::func() とクラス指定を付けなければならないだけで機能はfriend関数と同じ。 でもstatic関数不要論は言われないのに、friendはいらない子といわ...