>>67
駄目だな。
仮想関数にしないといけないのと、
それは子が子のままでいられるだけであって、子が親のメソッドを使った後も子で居続けられるわけでない。
> 実際に取得する型が親クラスに引っ張られないメリットを享受できる
> 自分自身の型を返す関数を定義する時など、親クラス固定だと、受け取った側でのキャストが面倒ですしね。
> http://cpp.aquariuscode.com/covariant-type
やはり既知の問題ではないか。
(C++しか使ったことがないなら意味が分からないと思うが)
JavaScriptの場合はクラス階層とインスタンス階層が分離しており、
各インスタンスはクラス階層を派生させてを作る。
だから元々親階層のメソッドから子階層のメンバ変数を参照出来るし、それがデフォの使い方だ。
クラス階層とインスタンス階層は文法的には違いが無く、クラスも継承出来るが、インスタンスも継承出来る。
これを上手く使えば、メモリを大幅に節約することが出来る。
C++にはこの記述能力がない。
理由はクラスとインスタンスが明確に分離しているからだ。
JavaScriptの挙動をC++用語で言えば、
thisが常に仮想thisであり、メンバ変数は全部仮想メンバ変数となっている。
だから親のメソッドを使っても派生型のままであり続け、自由にメソッドチェーンが出来る。
ただしここら辺はやや宗教的でもある。
親クラスの関数が派生クラスの変数を操作することを「仮想this」で実現するなら、
型安全ではなくなってしまう。
ただし実装は、単一継承の時には単に型チェックを外すだけと、極めて簡単であり、やる気だけの問題だ。
(ただしC++の場合には多重継承があるので若干問題がある)
なお、型安全を取りたいなら、仮想thisではなく、仮想メンバ変数で実現する事になる。
こちらはC++でも問題はない。(ただし動作速度が遅くなるが)
C++相談室 part138
■ このスレッドは過去ログ倉庫に格納されています
69デフォルトの名無しさん (ワッチョイ 174f-9b2l)
2018/09/19(水) 18:54:14.05ID:GJOADTEF0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】江別大学生集団暴行死 川村葉音被告に懲役30年、瀧澤海裕被告に懲役20年の判決 [おっさん友の会★]
- 【W杯】韓国が南アに敗退 3位でGL終了 ラウンド32進出は他試合結果次第に 3連勝メキシコが首位&南アフリカが初の決勝Tへ ★3 [阿弥陀ヶ峰★]
- 【速報】 ベネズエラでM7超地震、死者数は最大10万人にのぼる可能性、大統領代行が非常事態宣言 [お断り★]
- 【米紙報道】高市首相「コングレッショナルフェロー(官職)」経歴詐称疑惑… ★6 [BFU★]
- 「たばこのポイ捨てをしちゃだめだよ」男児に注意され激高、自転車を投げつけ現行犯逮捕 神奈川 [少考さん★]
- 「クチャラーがどうしても嫌」「寿司店で鼻をすする人が」…注意しにくい“音ハラ”「音が幻聴になりうつ病に発展する場合も」専門家 [少考さん★]
- 【MLB】ツインズ vs ドジャース ★7
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★177【メキシコ/カナダ/アメリカ】
- ハム専 ★7
- はません ★2
- 巨専】
- こいせん 全レス転載禁止
- 中国で逮捕された富士電機社員、ダミー製品にレアアースを埋め込み日本に輸出したあと抜き取るせこいことをやってたとバラされるw [709039863]
- 【悲報】「晋バルサン」Xでガチで大炎上してしまう🔥wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [175344491]
- 【速報】北海道江別市集団暴行盗致死事件・川村葉音被告、死刑でも無期でもなく懲役30年判決 [591180291]
- JA「もう倉庫に入らない」新米が倉庫に入りきらず悲鳴🤭 [993451824]
- 【緊急】美大の友達から「ヌードデッサンモデル」のバイトに誘われたんやが…
- 累積赤字500億円クールジャパン2「税金34兆円をアニメとかにつっこむ。政府、警察、自衛隊批判は許さない」 [633746646]