K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1936] 単語の出現頻度を数えるプログラムについて
投稿者:くま
2016/05/20 15:33:22

単語の出現頻度を数えるプログラムがリンカできません。_mainが未解決とエラーが表示されます。解決方法を教えてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1935] Re:プログラムを頂きます。
投稿者:みうら
2016/05/14 17:10:37

>>とても綺麗な掲示板ですね! > >ありがとうございます。 > >>これはフリーで使わせて頂いて宜しいのですか? > >Webで公開しているものはご自由に使っていただいて構いませんが、 >だんだん拡張したもののソースを順次貼っているのでそっくりそのままでは >動かないかもしれませんし、PHPのver.4の頃に作ったものなので今となっては >古いコードでもあります。 > >そのあたりを了解の上自己責任で使われるのであれば、ご自由にしてください。 > いいですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1934] Re:プログラムを頂きます。
投稿者:(ぱ)こと管理人
2016/05/12 00:44:36

>とても綺麗な掲示板ですね! ありがとうございます。 >これはフリーで使わせて頂いて宜しいのですか? Webで公開しているものはご自由に使っていただいて構いませんが、 だんだん拡張したもののソースを順次貼っているのでそっくりそのままでは 動かないかもしれませんし、PHPのver.4の頃に作ったものなので今となっては 古いコードでもあります。 そのあたりを了解の上自己責任で使われるのであれば、ご自由にしてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1933] プログラムを頂きます。
投稿者:ブラブラボール
2016/05/10 03:20:04

とても綺麗な掲示板ですね! これはフリーで使わせて頂いて宜しいのですか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1930] kmaebashi.comが停止していました
投稿者:(ぱ)こと管理人
2016/03/03 02:35:36

すみません、私がkmaebashi.comのサーバ料金の振り込みを忘れていたため、 kmaebashi.comが2/29~3/1にかけて停止していたようです。 現在は振り込みましたので復旧しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1929] Re:訂正
投稿者:(ぱ)こと管理人
2016/02/21 20:53:08

>【文】の elseif、elsifになっていました ちょっとどう対応すればよいのかわからなくて1ヵ月以上放置してしまいました。 今さら書いても投稿者の「けろ」さんは読んでおられないとは思うのですが。 これが、crowbarやらDiksamやらにおいて、else ifがelseifではなくて elsifになっている、というご指摘であれば、それは意図したものです。 こちらを参照してください。 http://kmaebashi.com/zakki/lang0001.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[1928] 訂正
投稿者:けろ
2016/01/12 17:53:25

【文】の elseif、elsifになっていました
[この投稿を含むスレッドを表示] [この投稿を削除]
[1921] おすすめの本はありますか?
投稿者:hello
2015/10/29 01:33:14

はじめまして!前橋さんのCでプログラミング言語を描く方法ガイドを今見つけたのですが、学校でパスカルのコンパイラをJavaで書く勉強をしていますがあまりよくわかりません。なにかおすすめの勉強法かウェブサイトか本はありますか?前橋さんのCのガイドに従ったらある程度わかるようになりますか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1920] Re:C言語ポインタ完全制覇について質問
投稿者:(ぱ)こと管理人
2015/10/22 01:18:10

>222pのlist4-8 read_file.cをコンパイルすると >$ gcc -o read_file read_file.c >C:/DOCUME~1/中村多~1/LOCALS~1/Temp/cc8001MB.o:read_file.c:(.text+0xa9): undefined reference to `read_line' >collect2: ld returned 1 exit status というエラーがでます。 >read_file.cの中に extern char *read_line(FILE* fp);と定義して実行していますが、 >コンパイルできません。どこが間違っているか教えてください。 >`read_line'はread_line.cに定義されている関数です。 単純に、そのread_line.cをリンクしていないからではないでしょうか。 $ gcc -o read_file read_file.c read_line.c
[この投稿を含むスレッドを表示] [この投稿を削除]
[1919] C言語ポインタ完全制覇について質問
投稿者:sanchu
2015/10/21 17:43:49

222pのlist4-8 read_file.cをコンパイルすると $ gcc -o read_file read_file.c C:/DOCUME~1/中村多~1/LOCALS~1/Temp/cc8001MB.o:read_file.c:(.text+0xa9): undefined reference to `read_line' collect2: ld returned 1 exit status というエラーがでます。 read_file.cの中に extern char *read_line(FILE* fp);と定義して実行していますが、 コンパイルできません。どこが間違っているか教えてください。 `read_line'はread_line.cに定義されている関数です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1918] Re:C言語ポインタ完全制覇について質問
投稿者:774RR
2015/10/20 06:50:02

だいたいいい感じだと思います。細かいところで間違っているようですけど... int a[7]; に対して、使える要素は a[0]..a[6] の7個です。 a[7] を使ってはいけません。 read_line を使ってないようですけど・・・ お勉強ならこういうコメントを入れてみるのはとてもお勧めです。 実用に供するソースコードにこんなコメントが入っていたらそいつの実力を疑います。 (ってか以後、コード系の仕事回しませんけど)
[この投稿を含むスレッドを表示] [この投稿を削除]
[1916] キャップ付きハンドサイズスクレーパー
投稿者:キャップ付きハンドサイズスクレーパー
2015/10/10 11:07:47

カーフィルム施工ツール巾着は分厚い材料に使いやすい設計で、フィルム施工の時にツールの取りに大変便利を与えました。施工道具補助ツールを買いたければ、カーライトフィルムツールhttp://www.caright.net/をぜひおすすめします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1913] 蟻力神
投稿者:蟻力神
2015/09/21 12:45:07

蟻力神(イーリーシン)を「勃起不全に効果的!」という口コミを信じて購入しました!確か に効果はありましたが、飲んだ感想としては副作用もあるのでオススメはできないですね 。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1912] Re:Flex
投稿者:(ぱ)こと管理人
2015/08/24 01:59:14

>どうやら、flexの方はGNUじゃないようです。 ご指摘ありがとうございます。 正直、無料公開しているWeb記事はさておき、書籍の方で嘘を書いていたら大変だ、 と思い確認したところ書籍の方にはflexがGNUであるという記述はありませんでした… Web記事の方の更新を怠っていたようです。 後ほど修正いたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1911] Flex
投稿者:flex
2015/08/19 23:54:31

http://kmaebashi.com/programmer/c_yota/calc.html の記事を読ませて頂きました。 flexがlexのgnu版と書いてありますが、WIkipediaには Unlike Bison, flex is not part of the GNU Project.[4] と書いてありました。 どうやら、flexの方はGNUじゃないようです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1910] Re:単語の出現頻度を表示するプログラムについて
投稿者:マロン
2015/08/09 00:19:32

>管理人様 > >C言語ポインタ完全制覇を熟読しています。単語の出現頻度を表示するプログラムについて、osはwindows7,visualStudio2015でビルドしようとしたところ以下のエラーが出てしまい、解決方法がわかりません。つきましては、解決の仕方をお教え頂きたく思います。よろしくお願いいたします。未解決の外部参照となってしまいます。 > >LNK1120 1 件の未解決の外部参照 word_count2 > >\Documents\Visual Studio 2015\Projects\CPlus\word_count2\Debug\word_count2.exe 1 > >LNK2019 未解決の外部シンボル "int __cdecl get_word(char *,int,struct _iobuf *)" (?get_word@@YAHPADHPAU_iobuf@@@Z) が関数 _main で参照されました。 > >Documents\Visual Studio 2015\Projects\CPlus\word_count2\word_count2\main.obj 1 > 解決しました。つまらんこと聴いてごめんなさい。削除してもらって構いません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1909] 単語の出現頻度を表示するプログラムについて
投稿者:マロン
2015/08/08 22:22:36

管理人様 C言語ポインタ完全制覇を熟読しています。単語の出現頻度を表示するプログラムについて、osはwindows7,visualStudio2015でビルドしようとしたところ以下のエラーが出てしまい、解決方法がわかりません。つきましては、解決の仕方をお教え頂きたく思います。よろしくお願いいたします。未解決の外部参照となってしまいます。 LNK1120 1 件の未解決の外部参照 word_count2 \Documents\Visual Studio 2015\Projects\CPlus\word_count2\Debug\word_count2.exe 1 LNK2019 未解決の外部シンボル "int __cdecl get_word(char *,int,struct _iobuf *)" (?get_word@@YAHPADHPAU_iobuf@@@Z) が関数 _main で参照されました。 Documents\Visual Studio 2015\Projects\CPlus\word_count2\word_count2\main.obj 1
[この投稿を含むスレッドを表示] [この投稿を削除]
[1908] Re:Java謎+落とし穴について
投稿者:
2015/08/02 22:36:50

早々にありがとうございます。すっきり理解できました。 10年(ドッグイヤーなら70年)以上前の本への疑問に、「そこまで面倒見られないよ」と言わず答えて下さり、感謝です。 久野禎子・靖さんの著書など、良い本もあるのですが、これでさえ索引に「参照」がないことに、首を傾げています。 そういうわけで『Java謎+落とし穴』は、メモリモデルで考えるためには、現在も唯一無二の拠り所となっています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1907] Re:Java謎+落とし穴について
投稿者:(ぱ)こと管理人
2015/08/02 13:11:34

>暑中お見舞い申し上げます。 こんにちは。 >『Java謎+落とし穴』で、二つ質問があります。 >見方によっては、各オブジェクトが、間接的にではありますが、それぞれ実行コードへのポインタを持つように思えるのですが、いかがでしょう。 「間接的に」実行コードへのポインタを持つのはその通りですね。 ここは、メソッドが10個あった時、各オブジェクトが10のポインタを持つ必要はないですし、 オブジェクトごとに実行コードへのポインタが書き換わることはない、という意味で 書きました。 (プロトタイプベースのオブジェクト指向だと、実際オブジェクトごとに持っていたり しますし) >・177ページ「draw()メソッドを呼び出す部分はPolylineやCircleにまったく依存しません(その構造体を宣言しているヘッダファイルを#includeする必要がない)」について。 >このdraw()メソッドは、183ページのdrawShape(shapes[i])メソッドと同じでしょうか。ここではmain.cに、各ヘッダファイルをincludeしているように見えます。 ここはわかりにくかったですね。 createPolyline()等は各図形の.hで宣言されているわけで、 各図形をnewするところでは各ヘッダファイルが必要です。 ただ、描画するところ(「draw()メソッドを呼び出す部分」)は、 Polyline.hやCircle.hにまったく依存しません。 (これはJavaにおいても同じことで、newするところは各クラスに依存します)。 この例では、main.cでnewと描画を両方やってしまっているので、 おっしゃるとおり、「main.cでincludeしているではないか」と疑問を持たれるのは わかります。 main.cの描画部分(17~20行目)を、draw.cとか、別ソースに分けておくべきだったかも しれません。 10年以上前の本ですが、ご指摘感謝いたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1906] Java謎+落とし穴について
投稿者:
2015/08/02 00:11:09

暑中お見舞い申し上げます。 『Java謎+落とし穴』で、二つ質問があります。 ・46ページ「メソッドの実行コードへのポインタは、オブジェクトごとではなくクラスごとに持てばよい」について。 他方、175ページでは、「各オブジェクトにクラスディスクリプタへのポインタを持たせる」こととされています。 見方によっては、各オブジェクトが、間接的にではありますが、それぞれ実行コードへのポインタを持つように思えるのですが、いかがでしょう。 「①オブジェクトの持つポインタ→②クラスディスクリプタの持つポインタ→③メソッドテーブルの持つポインタ」となっていて、確かに②と③(リフレクションを考えない限り、実質区別なし)は、オブジェクトごとではなく、クラスごとなのかもしれませんが… ・177ページ「draw()メソッドを呼び出す部分はPolylineやCircleにまったく依存しません(その構造体を宣言しているヘッダファイルを#includeする必要がない)」について。 このdraw()メソッドは、183ページのdrawShape(shapes[i])メソッドと同じでしょうか。ここではmain.cに、各ヘッダファイルをincludeしているように見えます。 (これは、たぶん私の誤解、誤読だと思いますが) ご教示をお願いできましたら幸いです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1905] Re:「PHPとMySQLで掲示板を作る」拝見しました。
投稿者:(ぱ)こと管理人
2015/03/10 02:25:38

>本題に入りますが、投稿内容を<PRE>タグで囲むということ(仕様を考えるのページ)ですが、それでは ><br /> >タグが使用できず改行ができなくなる、ということになります。 まず、この掲示板は、用途的にプログラムソースを貼ることが多いので、 基本等幅フォントで表示する必要がある、というのが<PRE>で囲むようにした 理由です。ただし、等幅フォントにするだけなら<TT>で囲めばよいので、 現状ではそうしています。 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=25 <PRE>で囲むと、投稿者が改行を入れなかった場合、画面が際限なく 右に伸びて崩れてしまうので改善したわけです。 というわけで、<PRE>タグ云々の話はすでに現状の実装とはずれているわけですが、 >そこで思ったのですが、そもそも<PRE>タグを使用せずに<や>の記号を無効にすればいいのでは、ということです。 <PRE>タグの中であっても、<や>の記号は普通に特殊文字としての 意味を持ちます。たとえば以下のページに載せているサンプルソースでは、 ソース全体を<PRE>で囲んでいますが、行番号は<FONT>タグで青字にしていますし、 ソース内で<やら>やら"やらを使うときには&lt;とか&gt;とか&quot;とかに しています。 http://kmaebashi.com/programmer/bbs_dev/newbbs.html >そして思ったのが、phpのhtmlspecialchars()関数です。HTMLにとって特別な意味の<>をすべて単なる文字に変換してくれるという非常に便利な関数です。詳しいことは検索などお願いします。 よって、この手のエスケープは、どちらにせよ必要であり、 htmlspecialchars()もすでに随所で使っています。 例) http://kmaebashi.com/programmer/bbs_dev/list.html >要するに、 >$test = $_GET["test"]; >を、 >$test = htmlspecialchars($_GET["test"]); >のようにしてしまおう、という考えです。こうすれば、<PRE>を使わずに済むため、改行が実現できると思います。 ところで、この例だと、入力の時点でhtmlspecialchars()をかけていますが、 これはそもそも考え方が間違っている、ということをこちらで書いています。 http://kmaebashi.com/zakki/zakki0042.html htmlspecialchars()をかけるのは入力時ではなく出力時にすべきです。 で、上記の記事でも言い訳を書いていますが、そして「PHPとMySQLで掲示板を作る」 内にも注釈を足していますが、 http://kmaebashi.com/programmer/bbs_dev/index.html 現状の「PHPとMySQLで掲示板を作る」のプログラムは(実際にここで動いている 掲示板もそうなのですが)、PHP4の時代のデフォルトであるmagic quoteを使って いるので、今となってはよくないプログラムなんですよねえ。 本記事、注釈を付けつつ公開を続けてきましたが、初心者を惑わせるのも よろしくないので、そろそろ消すべきかもしれません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1904] 「PHPとMySQLで掲示板を作る」拝見しました。
投稿者:html21315
2015/03/08 10:20:38

突然失礼します。 ホームページ拝見いたしました。phpで掲示板を作るという発想はありませんでした。 本題に入りますが、投稿内容を<PRE>タグで囲むということ(仕様を考えるのページ)ですが、それでは <br /> タグが使用できず改行ができなくなる、ということになります。 そこで思ったのですが、そもそも<PRE>タグを使用せずに<や>の記号を無効にすればいいのでは、ということです。 そして思ったのが、phpのhtmlspecialchars()関数です。HTMLにとって特別な意味の<>をすべて単なる文字に変換してくれるという非常に便利な関数です。詳しいことは検索などお願いします。 要するに、 $test = $_GET["test"]; を、 $test = htmlspecialchars($_GET["test"]); のようにしてしまおう、という考えです。こうすれば、<PRE>を使わずに済むため、改行が実現できると思います。 -追伸- ほとんどのユーザーは、改行を投稿の中でしたいとき<BR>ではなく単にEnterキーを使って改行をします。これを掲示板上で再現するためには<BR>を使わなければいけないので、そこが私が掲示板作りをしたときの悩みどころでした。 そこで、便利なPHPの関数を見つけましたので紹介します。 nl2br() 改行記号の前に<br />を挿入してくれるというありがたいものです。 $test = nl2br( htmlspecialchars( $_GET["test"] ) ); 一行にするとこうなりますが、わかりやすく書くと $test = $_GET["test"]; //取得 $test = htmlspecialchars($test); //<>の無効化 $test = nl2br($test); //<br />挿入 長文失礼しました。 ※先日誤ってメールで送信してしまいましたが、やはり掲示板に書き込むべきだと、掲示板の方に再投稿しました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1903] Re:オーバーライド時の共変、反変について
投稿者:(ぱ)こと管理人
2015/02/25 03:35:46

>Javaだとこの場合ははオーバライドにはならないで、オーバーロード、 >引数型が違う同名の別メソッドが増えただけと見なすことでガードするという実装なんですね。 こう言っては何なのですが、たぶんこれはJavaを「買いかぶりすぎ」だと思うのです。 引数については、反変はOK、共変はNG、 戻り値については、共変はNG、反変はOK なのですが、 JDK1.4までのJavaでは、 引数については、型が違えばオーバーロード、 戻り値については、型が違えばコンパイルエラー でした。戻り値については共変は許されるべきなのに、古いJavaではコンパイルエラーに してしまっていたのです。 Javaでは、JDK1.5(Tiger)において、「共変戻り値」が許されるようになりました。 後になってこれを許すようになったということは、 当初は、共変とか反変とかそんなことはJavaの作者はあんまりまじめに考えていなくて、 後になって、共変戻り値はOKにすることができたけれど、反変引数は、既にそれを オーバーロードという機能で使ってしまっていたためにOKにできなかったのではないか、 と思います。 メソッドオーバーロードがすごく便利だから反変引数を捨ててでもそちらを取った、 というのは言語設計者の選択肢として理解できますが(私はオーバーロードが便利だと 思わないのでその選択肢は取りませんが)、 本来使えるべき共変戻り値を当初エラーにしてしまっていた(しかも1.5でそれを 撤回した)というのは、あまりこう、ちゃんと考えた結果には見えないんですよねえ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1902] Re:diksamの実装に関して
投稿者:lang
2015/02/24 22:31:49

本質問に関してもご回答ありがとうございます。 8-4-9章に記載あるAとBがクラスの場合の条件の意図をつかめず、 少し混乱しておりましたが、 実行時にチェックする価値があるという視点で読み直すと理解できました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1901] Re:オーバーライド時の共変、反変について
投稿者:lang
2015/02/24 22:31:14

ご丁寧にご回答ありがとうございました。 理解できました。 確かに、引数時はダウンキャストになりますね。 Javaだとこの場合ははオーバライドにはならないで、オーバーロード、 引数型が違う同名の別メソッドが増えただけと見なすことでガードするという実装なんですね。 前橋さんの書籍で共変、反変という言葉を知ったのですが、 非常に一般的な概念のようでした。 直接Diksamとはご関係のない質問になってしまい大変恐縮です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1900] Re:diksamの実装に関して
投稿者:(ぱ)こと管理人
2015/02/24 02:58:14

>"プログラミング言語を作る"の8-4-9章の >A instance of B >の記載に関してです。 > >A、Bがクラスの場合、 >AとBが同じクラスか、AがBのスーパークラスの場合のみ、 >真になる可能性がある、 >とあります。 こちらは説明が不適切な気がしてきました…… たとえばShapeクラスのオブジェクトshapeがあったとき、 shape instanceof Circle という式は、「真になる可能性がある」と言えます。 instanceofは、こうしてクラスをチェックするために使うものでしょう。 全然違う、circle instanceof Windowなら、そもそもコンパイルエラーです。 ここで「真になる可能性がある」と書いているのはそういう意味です。 逆に circle instanceof Shape は、常に真です。常に真ならそれもやっぱり真になるのではないか、 というところですが、その下の説明にあるように、そもそもDiksamは こういうコードは無駄なのでコンパイルエラーにしています。 そういう意味で、実行時にチェックする価値がある、ということで 「真になる可能性がある」と書いたのかもしれませんが、それにしては 「AとBが同じクラスか」部分が余計です。クラスが同じならやっぱり 無駄だからです。 今は時間が時間なので、後日(週末をめどに)正誤表に載せるなり対応を考えます。 ご指摘ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1899] Re:オーバーライド時の共変、反変について
投稿者:(ぱ)こと管理人
2015/02/24 02:39:59

はじめまして。最近この掲示板もすっかり閑散としてしまっていて、 投稿に気付くのが遅れてしまいました。すみません。 ご質問いただきありがとうございます。 引用の順番を変更しますが、結論から言えば、 >戻りの値の型が共変、引数の型が共変、 >ともにダウンキャストとなる、という認識ですが、 >なぜ、問題の有無の判断が変わってくるのでしょうか。 引数の型が共変なのはダウンキャストですが、 戻り値の型が共変なのはアップキャストだからです。 >”プログラミング言語を作る”内の8-3-5章にて >下の解説を読みました。 p.289のコードですね。 >class ShapeArray{ > Shape get(int index); > void set(int index, Shape shape); >}; > >class CircleArray extends ShapeArray{ > Circle get(int index); ・・・① > void set(int index, Circle circle); ・・・② >}; まず、このコードは、 p.249の補足で、JavaのArrayStoreExceptionの説明をしていますが、 JavaがArrayStoreExceptionを発生させるという実行時チェックを しなければならなくなった、ということについて、共変の考え方からも 説明できる、ということを示すためのコードです。 ここまではよいでしょうか。 p.249の補足のサンプルコードで、 1: Line[] lines = new Line[10]; 2: Shape[] shapes = lines; 3: shapes[3] = new Circle(); というコードがあったとき、Javaでは3行目でArrayStoreExceptionが 発生します。shapesはあくまでLineの配列であり、Circleの配列では ないからです。 これはJavaにおける配列の話ですが、Javaの配列をShapeArrayとか CircleArrayといったクラスで表現すると、p.289のコードのようになります。 ここで、CircleArrayのインスタンスcircleArrayがあったとして、 Shape shape = circleArray.get(i); というコードは、アップキャストなので合法ですが、 circleArray.set(i, shape); というコードは、ダウンキャストになります。CircleArray.set()の第2引数の 型はCircleなので、もしShapeを渡したければダウンキャストが必要になります。 Javaでは、このダウンキャストに相当する実行時例外が、ArrayStoreExceptionに なっている、と言えるでしょう。 この例ではCircleArrayがShapeArrayを継承しているので、もし引数の共変を 許せば、 ShapeArray shapes = circleArray; shapes.set(i, shape); と書けてしまいます。このshapes.set(i, shape);が、 まさにp.249のコードの shapes[i] = new Circle(); に相当するわけです。 これで回答になっているでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1898] diksamの実装に関して
投稿者:lang
2015/02/22 19:08:07

立て続けに質問して申し訳ございません。 "プログラミング言語を作る"の8-4-9章の A instance of B の記載に関してです。 A、Bがクラスの場合、 AとBが同じクラスか、AがBのスーパークラスの場合のみ、 真になる可能性がある、 とあります。 A instance of B のAというのはオブジェクトという理解で良いでしょうか。 AがBのスーパークラスの場合に真という点に疑問を持ちました。 Aが右辺のBのクラスのサブクラスのオブジェクトであれば 真だという理解ですが、 AがBのスーパークラスの場合に真というのはなぜでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1897] オーバーライド時の共変、反変について
投稿者:lang
2015/02/21 14:30:58

”プログラミング言語を作る”内の8-3-5章にて 下の解説を読みました。 class ShapeArray{ Shape get(int index); void set(int index, Shape shape); }; class CircleArray extends ShapeArray{ Circle get(int index); ・・・① void set(int index, Circle circle); ・・・② }; ①は戻りの値の型が共変なので問題無し。 ②は引数の方が共変であるため実行時チェックが必要。 アップキャストは常に可能ですが、 ダウンキャスト時は実行時チェックが必要だと理解しています。 戻りの値の型が共変、引数の型が共変、 ともにダウンキャストとなる、という認識ですが、 なぜ、問題の有無の判断が変わってくるのでしょうか。 一般的な言語のオーバーライドの動作に関することで 本掲示板への質問が適切かどうか分かりませんが、 もしよろしければ細くいただけると助かります。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1895] Re:質問です
投稿者:
2014/09/13 13:34:55

ご返信ありがとうございました。 著者の方に質問できる場所があるって素晴らしいです。 アルゴリズムへの興味を深めることができました。 (個人的にはこの対話で十分満足です) 掲示板やWebサーバーの作り方も書籍化していただければと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]