オーバーロードって必要?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002shige
NGNG0003デフォルトの名無しさん
NGNGちょっと思うな。
ところで、くだ質あればこのクソスレって必要?
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGオーバーライド + オーバーロードな場合?
0006デフォルトの名無しさん
NGNGインターフェースもなー
0007デフォルトの名無しさん
NGNGa.someMethod();
}
void hoge(SubClass a) {
a.anotherMethod();
hoge((SuperClass)a);
}
という場合。食べ物が与えられた場合ただ口に入れてとんかつが与えられた場合はソースかけてから食べたいときとか。
0008デフォルトの名無しさん
NGNGうまい事言うね。
00091
NGNG0010デフォルトの名無しさん
NGNGオーバーロードは別の概念のメソッドをまとめるためのものじゃないじゃん。
001110
NGNG00121
NGNGだからいらないっていってるんですが。
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG文字列操作クラスを使いたいとき、
CStringとcharがどっちも使えれば便利だね。
CStringで渡したときはCStringで帰ってくると便利だね。
CString渡した場合は長さを表す引数はいらないね。
0015デフォルトの名無しさん
NGNG00161
NGNG言い方があいまいだった。12は11読む前に書いた。ごめそ
interface A {
void b(C obj);
void b(D obj);
}
CとDが関係ないクラスの場合は必要ないんじゃないってこと
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGcharの配列を文字列として使うのってオブジェクト指向的には邪道では?
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGいちいちメソッド名考えるのもめんどくさいし、
メソッドごとにドキュメントを書くのもイヤだ。
すべて do(...) でいいよ。
0022デフォルトの名無しさん
NGNGそれはダメ!(w
0023デフォルトの名無しさん
NGNGコンストラクタの引数に渡して文字列に変換するんだから,
いいんでないの?
0024デフォルトの名無しさん
NGNG002510
NGNGCとDに意味的関連性のないオーバーロードなんて普通はしないだろ。
>>1の投稿ではそんなこと言ってないし。
関係ないのにオーバーロードにしてるとしたら、そいつがセンスないだけ。
0026デフォルトの名無しさん
NGNGあればあったで便利だす
0027デフォルトの名無しさん
NGNG似たような性質のクラスでも、
継承関係にあるとは限らないしなあ。
0028デフォルトの名無しさん
NGNG002910
NGNG例えばRectangleとInt4つとか不要か?意味は一緒。
どちらかのパターンしか用意してないと、
使う人に使い方を強制するし、不便だぞ。
引数にデフォルト値を設定できるだけでカバーできない。
0030デフォルトの名無しさん
NGNGオーラロードかよっ
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG00331
NGNG意味的に関係あるなら共通のインターフェースを持っているべきだからメソッドは1つでいいからオーバーロードは必要ないという主張なのですが?
0034デフォルトの名無しさん
NGNG13章ぐらいいっとけー。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG{
Rectangle (Point LeftUpper, Point RightBottom);
Rectangle (Point LeftUpper, Size size);
}
は?
003725
NGNG君のいうインターフェースとは?
普及してる言語で、現実的に継承とかインタフェース(例えばJavaのinterface)の実装
とかをやってる場合、関係があるからといって同じ継承関係にあるとは限らないのでは?
0038デフォルトの名無しさん
NGNGCPUがこんがり焼ける罠。
003933
NGNGたとえば?
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGSmalltalk が合ってると思われ。
004440
NGNG引数にデフォルト値を指定できる場合って言ったけど。
0045デフォルトの名無しさん
NGNGそれは名前を区別してホスイ
RectanglePointToPoint (Point LeftUpper, Point RightBottom);
RectanglePointBySize (Point LeftUpper, Size size);
004636
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGということは抽象クラスもインタフェースも不要っとφ(. .)
0052デフォルトの名無しさん
NGNGあんたにゃpolymorphismは必要ないな
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGあればあったで便利だが、必ず必要なものじゃない。
おまえらもプログラマならこのくらい割り切っていこうぜ。ざっくばらんにな。
0057デフォルトの名無しさん
NGNG動的型付の OOPL しか使ったことないとか。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGkill(moe)
end
function a(Chobits chii)
fuck(chii)
end
0062デフォルトの名無しさん
NGNG0063shigeファン
NGNGそもそもOverloadする言語が型を知らない言語からextendsしてOOPにしているから、
Overloadは必要なんだよ。
そうだよな、shige兄貴!!そういえばRyuuBee!にはoverloadあるんかいな?
0064デフォルトの名無しさん
NGNG引数の数が激しく違う場合は?
って言うか様々な引数取るのは良いけど受け取る側のメソッドって悲惨だね・・・。
0065デフォルトの名無しさん
NGNG自分が作る分は必要最小限しか用意しないけど、
ライブラリにはいろんなオーバーロードを望む罠だね。
0066デフォルトの名無しさん
NGNG3がウィンドウを出すってほんと?
0067デフォルトの名無しさん
NGNG確かに。w
0068shigeファン
NGNG0069デフォルトの名無しさん
NGNG構造体の参照渡し
じゃ無いとダメっす。
だからそれやるとウケ側のメソッドがswitchの嵐に・・・。
0070shigeファン
NGNGmethod以外のメンバー使って解決できないもんなのかねえ?
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG言語仕様にはない。mutimethod 対応に改造した人はいたな。
似たような機能のライブラリ。
http://www.ruby-lang.org/en/raa-list.rhtml?name=overload
変に型を制限されると、
インタフェイス(メソッド)は互換性がある独自クラスのオブジェクトを投げられなくなってしまう。
動的型言語は、ライブラリ側で抽象クラスや interface を用意しなくとも
多態性が確保できるのが特徴なわけだし。
0073デフォルトの名無しさん
NGNGそれから派生した Class BとClassCを作る。
んでもって、
A b = new B;
A c = new C;
みたく定義すればbとc区別無く画一的な操作が可能。
基本だがこういう使い方をすれば
オーバーライドにも意味が出てくる。
まあ大概はそんなうまくいかないけどね。
俺は何は無くとも演算子オーバーロードはスゲエ必要だと思う。
STLコンテナに自作クラス入れる場合、
これが無いとポインタ入れるしかなくなる。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGいまいち演算子オーバーロードの恩恵に
いや、JavaでもStringだけは特別だったな
確かに無いと困るな
困りはしないか
でも面倒くさくなるな
やっぱり必要
0077デフォルトの名無しさん
NGNGファクトリーメソッド?
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG頑張って少しずつ覚えていってくださいね。
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNGごめん、ファクトリーメソッドって何?
まあSTLは演算子を変えなくても
他にやりようはあるんだけど、
例えば、ClassAがClass Xの配列のポインタを持ってたとして
void A::operator=( const A& other)
{
Class Xの配列をコピー
}
と定義すれば、
A a1;
A a2;
a1 = a2;
ってな具合に、不整合なくコピーすることが出来る。
やっぱ、あると便利。
0082デフォルトの名無しさん
NGNGクラスにして比較演算子を定義した。
違う構造体どうしの比較ならまだしも、
同じ構造体の比較演算子くらい、
自動生成しろといいたい。
(演算子が定義できるだけましか?)
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG単純にバイナリレベルで比較すりゃ良いものでも無いからだろ。
構造体が char** 型のフィールド持ってたらどうすんの?
008582
NGNGデフォルトのコピーコンストラクタや、
代入演算子と、同じ問題だろ。
0086デフォルトの名無しさん
NGNG008782
NGNGパディングがあるんだから、
ビットパターンなんていうわけない。
0088デフォルトの名無しさん
NGNG>代入演算子と、同じ問題だろ。
つまり、「デフォルトの比較演算子は危険だから、忘れないうちに定義しとけ」っつー問題に行きつくわけだ。
0089デフォルトの名無しさん
NGNG実装されたな。
009082
NGNGデフォルトのコピーコンストラクタも、
代入演算子も、俺は便利に使わせてもらってる。
あんたはどうよ?
多少危険でも、利便性を優先し、
必要なら自分で定義しなってスタンスは、
俺の性に合っている。
0091ワードル
NGNG波 紋 疾 走 + 「ロードローラーだッ!」 = オーバーロード
0093デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGAのメンバであるX*が単に参照なら
X*をコピーするだけでいいです。
それがA専用のXのインスタンスを指すポインタなら
X自体もコピーする訳です。
当然、Xにも=のオーバーロードを定義します
0096デフォルトの名無しさん
NGNG用意されなかったのは。==があれば!=も無い訳にはいかないだろうし、
使わないのに余計なコードが増えるの何だかいやだ。
0097デフォルトの名無しさん
NGNG意味違い
0098デフォルトの名無しさん
NGNGカプセル化も使える。
しかしポリモーフィズムだけは必要がない。
0099デフォルトの名無しさん
NGNGなんで継承とカプセル化は「使える」なのに、
ポリモーフィズムだけは「必要がない」なんだ?
0100デフォルトの名無しさん
NGNG比較は==と<だけありゃいいじゃん。
0101デフォルトの名無しさん
NGNG使える局面にぶち当たってないんだろうね。
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG絶対つけてくれ。ポリモーフィズムがないと何も出来ん。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG継承あってのポリモフィズムだと思ってた。
0107デフォルトの名無しさん
NGNGselfがそーでなかったかな?
0108107
NGNG0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG単に関係ないものをいっしょくたに扱っているだけと
区別できないように思うんだけど、その辺どう?
0111デフォルトの名無しさん
NGNG無意味な継承をするのと同じかと。
クラス階層という枠組みがあったほうが把握しやすいのは確かだけど、
区別してやるのは結局人間だからねえ。
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNGだから、お前はダメなんだな。
いろいろな状況を考えろ。
でも、エンジニアじゃなかったらゴメンな。
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGイイ!
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNGデフォルトの引数は便利だけど時に破綻するので
C#では廃止されたよ
0120デフォルトの名無しさん
NGNGしかし自動で生成された < なんてとても使い物にならん気もする。
■ このスレッドは過去ログ倉庫に格納されています