TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
WindowsDDK各種についてのスレ
シェルスクリプト総合 その29
暇だから最強のメモ帳つくらね?【java】
Gitをより良くするための運用ガイドライン作成スレ
Visual Studio 2019 Part4
Google NaCl プログラミング 2mol
盗用したコードどれくらい書換えれば合法になるの?
人工知能ディープラーニング機械学習のための数学
コメント研究すれ。
Regular Expression(正規表現) Part15
69 :
>>67
駄目だな。
仮想関数にしないといけないのと、
それは子が子のままでいられるだけであって、子が親のメソッドを使った後も子で居続けられるわけでない。

> 実際に取得する型が親クラスに引っ張られないメリットを享受できる
> 自分自身の型を返す関数を定義する時など、親クラス固定だと、受け取った側でのキャストが面倒ですしね。
> http://cpp.aquariuscode.com/covariant-type
やはり既知の問題ではないか。

(C++しか使ったことがないなら意味が分からないと思うが)
JavaScriptの場合はクラス階層とインスタンス階層が分離しており、
各インスタンスはクラス階層を派生させてを作る。
だから元々親階層のメソッドから子階層のメンバ変数を参照出来るし、それがデフォの使い方だ。

クラス階層とインスタンス階層は文法的には違いが無く、クラスも継承出来るが、インスタンスも継承出来る。
これを上手く使えば、メモリを大幅に節約することが出来る。
C++にはこの記述能力がない。
理由はクラスとインスタンスが明確に分離しているからだ。

JavaScriptの挙動をC++用語で言えば、
thisが常に仮想thisであり、メンバ変数は全部仮想メンバ変数となっている。
だから親のメソッドを使っても派生型のままであり続け、自由にメソッドチェーンが出来る。

ただしここら辺はやや宗教的でもある。
親クラスの関数が派生クラスの変数を操作することを「仮想this」で実現するなら、
型安全ではなくなってしまう。
ただし実装は、単一継承の時には単に型チェックを外すだけと、極めて簡単であり、やる気だけの問題だ。
(ただしC++の場合には多重継承があるので若干問題がある)
なお、型安全を取りたいなら、仮想thisではなく、仮想メンバ変数で実現する事になる。
こちらはC++でも問題はない。(ただし動作速度が遅くなるが)

ふらっと C#,C♯,C#(初心者用) Part138
Perlについて
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
Xamarin Part6
Xamarin Part6
次世代言語11[Rust Swift TypeScript Dart]
懐かしのMS-DOSプログラミング ver.2
プログラミングのお題スレ Part15
【C++】 DirectX初心者質問スレ Part41 【C】
C言語の設計ミスった危険な関数トップ10決めようぜ
--------------------
共産党・小池晃「安倍3選に異を唱える者いないなら、自民はお終い」 ネット「志位独裁体制には異議を唱えないのだから終わっている」
衛生管理者 part49
俺は体育の成績が小学校〜中学まで1でした
たけぽんが今いればYouTuberとして成功したな
ろだこみ! 217(ID無し)
鳥鯖CGI設置可開始
50代の読書/どんな本読んでる? →2019年
服に興味を持ち始めた人が質問するスレ908th
機動戦士ガンダムオンラインPart6313
イチョウ・・・銀杏・・・鴨脚
エンジンを掛けた車の排気口のところで腰を振っている男(´・ω・) カワイソス 山田ヲチスレ 1396
【知識】異常なほどに暑い夏! クルマのエンジンルーム内の液体モノは蒸発しないのか?
☆創価学会を舐めるなよ!ゴルア!★
被害
今更ゼノギアスのすごさにきづいたさすがたなか
X-MEN 65人目 アポカリプス/ウルヴァリン(ローガン)/デッドプール
PayPay、QR決済で圧倒的シェアを獲得。スーパーアプリで生活の全てを掌握へ!孫正義強すぎ w
【FEZ】ファンタジーアースゼロ雑談スレ1490
【兵庫県】勝谷誠彦 Part1【知事選】
【埼玉】うどん製麺量国内2位、狙え香川超え 勝算は「ある」埼玉こそうどん県 [10/03]
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼