- 1 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 09:05:42.21 ID:mJKRg6iz0.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part133 mevius.5ch.net/test/read.cgi/tech/1511509970/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1509780815/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 709 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:41:51.26 ID:PjVFN34O0.net]
- ローカライズに向いてない。
打鍵数が倍増どころじゃない。 モダン言語はみなprintfライクだしねー
- 710 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 02:48:01.36 ID:PXcTmg8I0.net]
- printf()は便利ではあるが桁を揃えて出す時に面倒になることもある。
特にこの頃は UTF-8 で漢字混ざりだと文字幅とバイト数または文字数が一致しない。 そもそもそんなものの一致をあてにすること自体が間違いかも知れないが、Unicode には一応 HALF WIDTH, FULL WIDTH 等があるんだから何とかしてこれを生かした フォーマッタが欲しいところではある。
- 711 名前:デフォルトの名無しさん [2018/03/20(火) 06:49:53.60 ID:eswqOupsM.net]
- >>673
>>674 あるクラスがあって、その中でスレッド立ててるの それでクラスのデストラクタが呼ばれたら、メンバ変数のスレッドポインタをつかってスレッドcancel->joinってやろうとしてて それでjoin呼ぶあたりで落ちるんだよね 作られた逆順ってことはデストラクタのほうが先に実行かな?それだとメンバ変数はいきてるよね
- 712 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:55:01.02 ID:83N3dpVy0.net]
- streamはコンソールの入出力のためだけにあるわけじゃないから
- 713 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:55:05.50 ID:Wsijl5j90.net]
- つーてもcoutだってsetw/setfillはあんまり使いやすくないしなあ
operator<<をユーザー定義できるのはありがたいけどね
- 714 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 13:10:27.33 ID:geezFnQ40.net]
- >>689
デストラクタの実行中はそのクラスとその派生元クラスのメンバ変数はまだ使える 必ず落ちるならデバッガでバックトレース見てみたら?
- 715 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 19:32:56.49 ID:mI6/gPTY0.net]
- 別の原因に見える
まずデストラクタじゃなくて普通のメンバ関数で明示的に呼んで止めた時に大丈夫か確認してはどうか
- 716 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 19:45:17.42 ID:KQMGt9+Dd.net]
- pthread_cancel はいろんなことがよく分かっている人しか使ってはいけない
- 717 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:33:41.91 ID:f35CyiEk0.net]
- >>686
「<<」と「>>」の2種類しか用意できんやんけ それらを表示と入力に割り当ててしまえば結局シリアライズのための固有なメソッドなりインターフェースなりを別途作らねばならんぬ、 そもそもの構想からして頓挫してゐる、 頓挫してゐるのだ…!
- 718 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 23:55:08.06 ID:N1yoGURK0.net]
- >>695
表示用とシリアライズ用はストリームの性質で切り替える筋合いのものだろ? シリアライズ用のストリーム
- 719 名前:型を用意してオーバーロードすればいいんじゃね。 []
- [ここ壊れてます]
- 720 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:33:52.80 ID:7c9Ne47J0.net]
- ちょっなんで数億年の生物史史上はじめて
ようやっとSTDINとSTDOUTとSTDERRの3種類に世界が抽象化されたストリームという概念|を 細分化するという元の木阿弥にしますか;; 藻前は some_command | tee result.txt > some_file.bin とかいったパイプやリダイレクトを表示専用とかシリアライズ専用とかに分けたいのかっていうか、
- 721 名前:デフォルトの名無しさん [2018/03/21(水) 00:44:24.33 ID:p0rFESlF0.net]
- なに藻前って
- 722 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:10:44.31 ID:MouF+uE40.net]
- >>697
お前は何を言ってるんだ。 ここで言ってるストリームは C++ 用語のストリームだぞ。 「ストリーム『型』」ってわざわざ書いてるんだからわかれよ。 下位レイヤでは好きなところに繋げればいい。
- 723 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 01:18:27.48 ID:9NBOfW2C0.net]
- streamとstreambufの違いを理解しよう
- 724 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:24:40.58 ID:MouF+uE40.net]
- 要するに std::basic_ostream を継承した何かを作ればいいんだ。
- 725 名前:デフォルトの名無しさん [2018/03/21(水) 06:52:22.30 ID:fTbDiwfs0.net]
- ストリームはもう捨てたほうが良いぞ。
おじさんからの警告だ。
- 726 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 07:14:12.04 ID:2n7LolrI0.net]
- 便利そうに見えて便利に使えない
それがstream
- 727 名前:デフォルトの名無しさん [2018/03/21(水) 07:18:35.01 ID:zecIlzA/0.net]
- 「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ labaq.com/archives/51880196.html 日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには? https://bodoge.hoobby.net/columns/00013 はじめてボードゲームを作ってはじめてゲームマーケットに出店した ので、ひとり反省会をしてみる。 datecocco.hatenablog.com/entry/2015/11/26/000000 はじめて作ったボードゲームを売った話 nrmgoraku.hateblo.jp/entry/2017/05/17/210000 ボードゲームイベント「ゲームマーケット」から業界が見えた! https://entertainmentstation.jp/61107 ゲームマーケットに挑む人向けガイド spa-game.com/?p=4830 ボードゲームはどう作るのか、自分なりに考えた roy.hatenablog.com/entry/2014/07/09/124824 オトナも遊べるボードゲーム!自作するといくらになるのか www.d-laboweb.jp/special/sp312/ ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの 市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ) https://bodoge.hoobby.net/columns/00001 ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中 gigazine.net/news/20150820-board-game-crowdfunding/
- 728 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 10:36:30.48 ID:DQv7yGEy0.net]
- >>697
カンブリア紀からオルドビス紀にかけて行われた抽象化は 今でいうインターフェイスの考え方で、当たり前だが インターフェイスを継承する実装クラスは無数にあってよい そういうのは元の木阿弥とは言わないぞ
- 729 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 15:09:48.71 ID:MouF+uE40.net]
- >>697
さっき >>699 で説明した C++ の話題を置くとしても、 (まあ C++ スレで C++ の話題を置いちゃうのはどうかと思うが) 標準入力、標準出力、標準エラー出力のみっつしかないってことはない。 エラー出力をリダイレクトするときに 2> って書くの、どういう意味だと思ってる? 2 はファイルディスクリプタな。 デフォでオープンされてるのが 0, 1, 2 ってだけで、やりたければ 3 でも 4 でも使っていい。
- 730 名前: mailto:sage [2018/03/21(水) 15:42:02.21 ID:ZGJmhAHm0.net]
- >>706
空いているディスクリプタが使用されるとしても、自分で特定の数字を指定してディスクリプタにすることはできなかったんじゃなかったかな?
- 731 名前: mailto:sage [2018/03/21(水) 15:50:19.07 ID:ZGJmhAHm0.net]
- >>707
失礼、dup2() というのがあったね…
- 732 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:58:29.69 ID:9NBOfW2C0.net]
- coutがSTDOUTにつながってるだけでここは何につなげてもいいということ
streambufの中身はただの配列でもいいし、アプリケーションのロガーでもいいし、循環バッファでもいいし、通信のポートでもいい
- 733 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:28:41.53 ID:TV3lE0eZ0.net]
- シリアライズするときはバイナリ表現にしたいし
ログするときは文字列表記にしたいし
- 734 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 20:00:34.84 ID:MouF+uE40.net]
- >>710
だからそれはストリームオブジェクトの型で切り替えろって言ってるんだろうが
- 735 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:30:34.07 ID:VVSY5O5Ed.net]
- それを嫌だって言ってんだよ
バイナリの読み書きは write() だの read() で十分
- 736 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 20:33:11.12 ID:MouF+uE40.net]
- read なり write なりを「使う」のは別にいいよ。
それを C++ 上でどのように抽象化すればいいかって話なんだから。 そういうレイヤの違う話を混ぜ込んでくるなよ。
- 737 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:43:51.09 ID:KgSvodNyd.net]
- そこで新しい型を設けてまで << を使う意味がない
cout にバイナリでシリアライズするときはどうすんの? size_t serialize(const T& t, ostream& os) とかを各型用に書く方がマシ
- 738 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:47:43.15 ID:KgSvodNyd.net]
- バイナリでシリアライズするに際して
別の型のストリームオブジェクトを作ってまで << だの dec だの endl を使えるようにすることの利点を説明して欲しい
- 739 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 21:36:05.23 ID:9NBOfW2C0.net]
- 例外を除いて
operator<<()は書式化出力 write()は非書式化出力 なのでバイナリを出力するときはwrite()を使うべき >size_t serialize(const T& t, ostream& os) シリアライズのような複雑な操作をするときはこれは悪い選択じゃない というかstreamそのものを放り込むのはたまに見かける
- 740 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:02:23.07 ID:52xrh1HkM.net]
- えっブロックデバイスにもStreamを
- 741 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:15:54.63 ID:MouF+uE40.net]
- >>716
書式化 (formatted) ってのと、結果がバイナリかというのは直行する概念だよ。 シリアライズってのはオブジェクトのバイト列をそのまま出力することじゃなくて、 バイナリ形式の特定のフォーマットにして出力することだろ。 それは書式化って言うんだよ。
- 742 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:26:24.75 ID:MouF+uE40.net]
- >>715
マニピュレータを使える意味はないかもな。 使えないように定義することも出来るし、意味がないなら使えないようにしておくべき。 ここでは抽象化の話をしているんだ。 出力先が人向けのテキスト表現であるか機械向けのシリアライズ表現であるかによって 書き方を変えなきゃならない、相手を意識しなきゃならないというよりは、 相手によって自動で切り替わって欲しいってことなんだよ。 意識しなくていいデザインってのは意識しにくくなるってことと表裏一体だから、 見えなくなるのが気にくわないってのならわかる。
- 743 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:26:32.59 ID:OwhHF7Zm0.net]
- 直交
- 744 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:29:29.81 ID:MouF+uE40.net]
- >>720
スマソ。 >>718 の直行は直交の書き間違いやね。
- 745 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:13:33.75 ID:NRxI71LE0.net]
- 無意味な処理が嫌だとか言っておきながら
ここでは無駄の塊みたいな方法を勧める アホですね
- 746 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 23:50:04.75 ID:MouF+uE40.net]
- >>722
俺は一貫して抽象化の話をしてるつもりなんだが。 プログラマの意図を表現できる書き方をすべきって話をしてんの。 無意味な処理をしろと書いてあるのをプログラマの意図として読み取っていいのか? そうじゃないだろう。 C++ がせっかく用意しているライブラリを活用するのが無駄なのか? そうじゃないだろう。
- 747 名前:デフォルトの名無しさん [2018/03/22(木) 07:21:49.59 ID:tiDItZ1f0.net]
- ハッキリ言ってストリームは蛇足だったわ。
廃止したほうが良いわ。
- 748 名前:デフォルトの名無しさん [2018/03/22(木) 07:25:52.15 ID:tiDItZ1f0.net]
- Boostもそうだけど、有り余るC++のパワーをカッコよく使いこなそうとしてやっちまったみたいな。
もうちょっと使う側の立場にたつべきだな。
- 749 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 08:38:59.71 ID:0Y4DSJfq0.net]
- 黒魔術だなんだ言って楽しめないようではC++は向いていない
- 750 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 10:14:29.52 ID:Q5Rs9TJ/0.net]
- 蛇足ねえ。。。
禿本1stでoperator overloadのデモ用に作られたサンプルなんだが そういうのは後で取って付けた存在といえるのか?
- 751 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:28:14.63 ID:PBLsyShY0.net]
- 業界全体としては奥の深さを求める人(求道者)を一か所に集め留めるのには非常に有益な言語
- 752 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:34:08.02 ID:0Y4DSJfq0.net]
- そのうちAsioやRangeあたりも標準化されるだろうし
もうその方向に突き抜けてほしい 使いやすい言語なんか他にいくらでもある
- 753 名前:はちみつ餃子 mailto:sage [2018/03/22(木) 17:41:04.44 ID:HExEyyqO0.net]
- 具体的にどういうときに不便なのか語れよ。
使いにくいってだけじゃ何にもわからん。
- 754 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:43:00.10 ID:0Y4DSJfq0.net]
- C++に関しては慣れてない人がそう言ってるだけだから
- 755 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 19:57:57.53 ID:sR+euIcT0.net]
- >>727
どの資料だったか覚えてないけど、演算子オーバーロードに関して 先生は「元の演算子の意味とかけ離れた挙動をさせるのは避けるべきだ」 みたいなことも書いてるよな。 まぁ、原則は指針であって絶対の規則じゃないわけだけど、 << >> をビットシフトからストリーム入出力に振り替えておいて どの口で言うか、このハゲッー! とか思ったり。
- 756 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 20:06:11.34 ID:0Y4DSJfq0.net]
- >>732
ストリームのような周知の事実になっているものはそれには当てはまらないでしょ
- 757 名前:はちみつ餃子 mailto:sage [2018/03/22(木) 20:22:42.90 ID:HExEyyqO0.net]
- >>732-733
まああれくらいのものになると、オブジェクトに追加で突っ込んでいくような動作が「元の演算子の意味」になっちゃってるよな。 そんなことより C++20 に入る予定のカレンダーでは日付を 2018y/mar/22 とか書けるらしくて、 これはさすがにクソやろ……。 これもいずれ普通に受け入れる気持ちになるだろうか。
- 758 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 20:47:25.31 ID:0Y4DSJfq0.net]
- >>734
既にfilesystemのpathが/で階層作れるから current_path / "aho" / "baka"みたいに C++の演算子は連想ゲームだ
- 759 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 22:18:28.94 ID:Q5Rs9TJ/0.net]
- >>732
あの頃の禿はreverse_iteratorなんて思いもよらず operator+が減算の動作をすることを否定してたね
- 760 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 00:38:32.35 ID:2SqL+aT8a.net]
- >>734
日付の表記は何種類かあるし年/月/日でも日/年/月でも表せるなら結構便利だと思う。
- 761 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 08:21:50.21 ID:VCdaFb7Y0.net]
- >>734
標準に「日付を表す型」みたいのが追加され、 それ用リテラルの接尾語(のひとつ)が ""y で 2018y
- 762 名前: は2018年を表す、
さらにこの型では / は日付要素を区切る演算子としてオーバーロードされてる。 …といった感じか? 確かに虚心坦懐に / を見れば、割り算のコンピュータ向け代用記号だけでなく 日付の区切りや、ファイルシステムの階層区切りでもあるけど。 [] - [ここ壊れてます]
- 763 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 09:13:18.25 ID:xSYf1jdZ0.net]
- aのb乗
a^b a**b
- 764 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 10:31:52.82 ID:fMiQp2pkd.net]
- こんだけ演算子は深いのになぜか未だに[]は引数を一つしか取れない
- 765 名前:デフォルトの名無しさん [2018/03/23(金) 10:45:38.60 ID:COiOJTLla.net]
- 「静的」、「動的」というのがよく分からないのですが、詳しく書いてある本はありますか?
ヒープ領域がどうたらとかいうのもよく分かりません。 スタックとかいうのもよく分かりません。 詳しく解説している本を教えてください。
- 766 名前:デフォルトの名無しさん [2018/03/23(金) 10:48:57.55 ID:COiOJTLla.net]
- ロベールのC++の本を読んでいて疑問に思いました。
- 767 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:28:55.75 ID:FQA7q+b8M.net]
- >>738
> …といった感じか? そんな感じらしい d.hatena.ne.jp/yohhoy/touch/20180322/p1 日本だと基本 年/月/日 しかないしソースコードに 睦月、如月、弥生 なんて書く奴はいないからいまいち便利さがわからんけどあちらの人にとっては便利なんだろうか
- 768 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:30:12.07 ID:5ELqDBlL0.net]
- ポップとプッシュの概念もよく分かってないのでは
www.cc.kyoto-su.ac.jp/~yamada/ap/stack.html これが分かって来るとC++に於けるバッファオーバーフローBOF攻撃の仕組みが分かって来る
- 769 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:42:22.13 ID:5ELqDBlL0.net]
- バッファオーバーフロー: #1 概要
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c901.html
- 770 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 19:52:45.96 ID:e6tCc9HsM.net]
- 五曜は対応してくれると有り難いかも知れないけど
他はいらんな
- 771 名前: mailto:sage [2018/03/23(金) 19:55:59.42 ID:J4dYcx4H0.net]
- >>741
C/C++ のメモリ構造について、になります。 これは基本的な事項で、初級を脱するためにはぜひとも必要な知識なんですが、 そのわりにあまりに解説されることがないような気がします 適切な説明がないものか…
- 772 名前: mailto:sage [2018/03/23(金) 19:59:40.83 ID:J4dYcx4H0.net]
- >>741
まず、メモリの管理方法として 1. スタックエリア、に格納するやり方 2. ヒープエリア、に格納するやり方 の大きく分けて二通りがあり、 2. ヒープエリア、二格納するやり方について 2-1. 「静的」:static キーワードを使うやり方 2-1. 「動的」:malloc()/free() または new/delete を使うやり方 が分類されます。
- 773 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:10:28.07 ID:e6tCc9HsM.net]
- データセグメントって無くなったの?
- 774 名前:デフォルトの名無しさん [2018/03/23(金) 20:39:25.53 ID:COiOJTLla.net]
- >>747-748
ありがとうございました。 あまりそういう本はないんですか。 もしかしたら、ヘネシーらのコンピュータのハードの本とか読まないといけないんですかね? あるいはコンパイラの本ですかね?
- 775 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:40:47.42 ID:l1/KZZgNM.net]
- >>748
一般的に、静的領域をヒープとは呼ばんだろ
- 776 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:41:24.55 ID:qmCr5Czp0.net]
- こういうのはネットで覚えたからどういう本に書いてあるかはわからん
- 777 名前: mailto:sage [2018/03/23(金) 20:45:34.35 ID:J4dYcx4H0.net]
- >>750
手っ取り早いのは「マシン語」を書いてみる、マシン語(アセンブリ言語)のルーチンを C にリンクさせる、ていうのが王道ですが、 昨今はマシン語のいい教科書がない、という気がします gcc のインラインアセンブラとかが有望だとは思いますが、まあ簡単にマシン語を記述している教材なんていうものが思いつかない、マシン語の需要というか動機がないのかもしれませんが
- 778 名前: mailto:sage [2018/03/23(金) 20:46:44.14 ID:J4dYcx4H0.net]
- >>751
うーむ、たしかに static を「ヒープ」とは言わないかもしれませんね…
- 779 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 20:47:37.33 ID:COiOJTLla.net]
- >>753
ありがとうございました。 マシン語の本を探してみます。 >>752 ありがとうございました。 本に書いていない場合には仕方がないのでネットで調べてみることにします。
- 780 名前:はちみつ餃子 mailto:sage [2018/03/23(金) 22:32:48.28 ID:ehYNLgPn0.net]
- どうだろ?
C++ の言語仕様的にはオブジェクトの寿命に違いがあるだけで、 それを実現するメカニズムについては詳細な規定があるわけではない。 まずは C++ のパラダイムの中で理解を深めれば自然に理解できるんじゃないの? 手を広げすぎても収集が付かなくなる気もするんだけどなぁ。
- 781 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 22:56:58.27 ID:io4DvPx8a.net]
- マシン語に手を出すのは飛躍しすぎだしやめといた方がいい。ある程度C++になれてより深く理解したいと思うようになってからがいいよ。
動的、静的は大雑把に言えば、コンパイル時つまりソースを書いた時点で決まるものを静的、実行時に変化するものを静的と呼ぶ。 変数の型とかメモリ領域の確保の仕方とか、いろんな文脈で使われる。
- 782 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 22:57:57.59 ID:io4DvPx8a.net]
- >>757
実行時に変化するのは動的でした
- 783 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 23:15:38.28 ID:g9Gf634nM.net]
- >>757
決まる、決まらないの主語は何でしょうか?
- 784 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 00:54:38.69 ID:LvcaB4Q+0.net]
- メモリについて知りたいんならC言語から始めたら良い
Unixの移植目的で設計されたC言語は、実行効率のためほとんど必然的にメモリが透けて見える言語になったんである 『プログラミング言語C』という名著もある これの後ろの方のmalloc()の実装サンプルまで通読したら シングルCPUの範疇ならメモリについて嫌でもワカル 『プログラミング言語C++』と違って三日もあれば読めれる手頃な分量やしな!
- 785 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 01:27:57.09 ID:eFb1d56B0.net]
- >>759
横だが。 何でも、だよ。 型なら静的型、動的型というし、メモリ確保なら静的確保、動的確保という。 マシン語は飛躍しすぎ。 CのエンハンスとしてC++を使うのならマシン語(インラインアセンブラ)もありだが、 C++をJava/C#/C++の並びで使うつもりならインラインアセンブラとか禁止でしょ。 というかそもそもその辺が分からない=全くの初心者がC++からやろうというのが間違い。 PythonかRubyあたりから始めとけ。(どっちも俺は知らんけど)
- 786 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 01:40:25.62 ID:nPxx/G4d0.net]
- コンパイラがコンパイル時に決めるものが静的、出来上がったプログラムを実行した時に決まるのが動的
C++だとそういう理解の方がわかりやすいと思う マクロ、テンプレート、constexpr、リテラル、式や変数や関数やクラスの宣言型なんかは静的 静的なものは全部コンパイラが決めるからプログラムの実行時にはいちいち計算しないし、バグで決められなかったらコンパイラが怒る 変数やインスタンスの中身、関数呼び出し、仮想クラスのオブジェクト型なんかは動的 実行環境や食わせた入力・ファイルなんかに依存するからプログラムを実行してみないと決まらない 動的なバグはコンパイラは感知できないから客先でプログラムを実行するとクラッシュする 適当だけどだいたいこんな感じ
- 787 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:04:25.06 ID:eFb1d56B0.net]
- 細かいようだが、
コンパイル時に確定=静的 実行時に確定=動的(=コンパイル時に確定できない) で若干の例外(staticとか)があるが大体あってる。 「プログラミング言語C」はやめとけ。名著だが、あれは 「既にプログラミングを出来る人が、C言語を学ぶ」用であって、全くの初心者じゃ読めない。 「プログラミング言語C++」も止めとけ。あれも「既にCを使える人が…」で以下同文。 他本は総じてゴミなのも事実だが。
- 788 名前:デフォルトの名無しさん [2018/03/24(土) 02:06:26.05 ID:Z79Bg+7E0.net]
- 特定のアドレスにデータを配置して割り込みかける必要があるからじゃないだろか。
- 789 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:09:36.82 ID:nPxx/G4d0.net]
- 予約語のstaticは転用されまくってわけわからなくなってるので
「静的」とソースコード上のstaticは全く別物だと思った方がいい
- 790 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:15:26.90 ID:qYWJwKPe0.net]
- その辺整理されないんだろうかね
そう言うものだという説明で 不本意ながら納得する事何十年
- 791 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:29:56.73 ID:eFb1d56B0.net]
- そんなに混乱するか?例外としてしまって問題ないと思うが。
俺は規格には詳しくないが、(というより色々混ざってしまっているが) ・Cのstatic関数=ファイルスコープに限定、externの反対 --- (A) はC++ではなんとかされたのではなかったっけ?(どうせ使わないからどうでもいいが) ・staticクラス、あるいはクラスのstaticメソッド --- (B) は「静的」で矛盾しないから、そもそも問題ない。 ・関数内static変数でプチグローバル(みたいなやつ) --- (C) も普通にクラスにしろ、って話でしかないし、使わないだろ。 結果、普通に使う分には特に混乱しないと思うが。 文法オタクは気にするのかもしれんが。 (C)は「動的関数にしよう」という意図があったのかもしれんが、 結局C/C++の世界は静的関数しかないから、意味無かったし。 というかそもそも俺は動的関数のメリットがよく分からん。 C#は動的関数だが、結局ロード/アンロードはアセンブリ単位=ほぼ起動時に纏めて、 であって、活用してない。 Javaは動的関数でメリットを享受してるんだっけ?(知らんから教えて)
- 792 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:33:41.17 ID:y/z0A0hW0.net]
- https://ideone.com/Epp30z
お兄ちゃん助けて、コンパイルが通らないの。 VCで開発してます。 jsonのメモリーモデル研究にとりあえずシェアードPTRの組んでそれからやっぱユニークPTRの変更しました。 色々いじってるのですが、意味不明なエラーが出てさっぱりわかりません。 自前のコードなら自分でどうにかするのですが、コードステップするとライブラリの中でえらーおこしててさっぱりです。 どなたかご教示ください。お願いします。
- 793 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:46:21.51 ID:nPxx/G4d0.net]
- std::vector<UniqueObject>にstd::pair<UniqueObject,UniqueObject>突っ込もうとしてんじゃん
ちゃんとエラーメッセージ読めよ
- 794 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 02:51:39.38 ID:y/z0A0hW0.net]
- え?何行目ですか?そんなバカな・・・。え?
- 795 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 03:47:44.28 ID:jOWDr2Es0.net]
- static関数は恐らくリンク工程がdynamicの場合があるため
それに対してのstaticなんだろな
- 796 名前:デフォルトの名無しさん [2018/03/24(土) 03:55:06.40 ID:Z79Bg+7E0.net]
- 毎回思うんだけど、なんでgccで勉強しようとするんだろうな。
エラーメッセージ読めと言われても読めるわけがない。 一番わかりにくいメッセージを出すコンパイラで勉強する子が不憫でならない。
- 797 名前:デフォルトの名無しさん [2018/03/24(土) 04:28:06.63 .net]
- >>772
VCで開発って書いてんだろーが
- 798 名前:デフォルトの名無しさん [2018/03/24(土) 04:30:46.18 ID:Z79Bg+7E0.net]
- 確かに書いてあるな。
じゃあエラーメッセージ読めよ。
- 799 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 05:34:00.15 ID:GrrVfR010.net]
- 読む気のない奴は何使ってもダメだという良い例
- 800 名前:デフォルトの名無しさん [2018/03/24(土) 06:12:32.26 .net]
- いつも大量のWarningが出るのを真面目に対処せず放置してるからErrorが出ても理解できない罠
- 801 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:12:34.93 ID:y/z0A0hW0.net]
- https://ideone.com/FN5IrI
理屈の一つは多分。 イニシャライザーリストが要素をconstで構築するからmoveできない? 内部でconst_castするわけないしこれ詰んでない? あるぅぇ〜。なんでじゃー。
- 802 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:25:04.10 ID:0qB0BmlJ0.net]
- static_castの動作内容は翻訳時に全て確定する
dynamic_castの動作内容は実行時のvtableにより変化する static_assertは翻訳時に検査を行う assertは実行時に検査を行う static link libraryは翻訳時に結合する dynamic link libraryは実行時に読み込む
- 803 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:57:20.04 ID:XPzSeRia0.net]
- どうやら >>741 の質問は C++ に限定した話ではないみたいだから、
C と C++ の両方を扱うスレッドに移動するのが良いんじゃないかな。 「Cの場合は…」「ここC++のスレッドだし」レベルの齟齬が避けられるし、 このスレッドを見てないC専門の人が有用な情報を持ってるかも知れん。 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 ttp://mevius.5ch.net/test/read.cgi/tech/1509780815/ スレを勃てるまでもないC/C++の質問はここで 25 ttp://mevius.5ch.net/test/read.cgi/tech/1471100645/
- 804 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 09:00:52.23 ID:eFb1d56B0.net]
- >>779
質問者はそれ以前の、プログラミング一般の「静的」「動的」の区別が付いてない。 スレ移動しても意味無い。というかどこのスレでも同じ。 C++のstaticは、Cのグダグダな仕様を引きずっているからおかしくなっているだけで、 C++で新たに設定されたstaticは他言語とも整合取れてる。 これに関しては「Cが悪い」でいいと思うよ。 説明している本が無いのは、そもそもそんなところで引っかからないだろう。 教習所でハイオクの話をしても意味無い。 一通り動く物を組めるようになるまではそれにフォーカスしろ、でいい。
- 805 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 09:28:18.28 ID:nPxx/G4d0.net]
- 静的動的の区別は大事だし引っかかりやすい所でもあるでしょ
テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ 説明してる本がないって本当か?本当なら世の本がクソすぎる
- 806 名前:デフォルトの名無しさん [2018/03/24(土) 10:20:48.01 ID:Z79Bg+7E0.net]
- で、静的と動的の違いは何なんだよ。
ガンダムで説明してくれ。
- 807 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 10:26:44.70 ID:UtKAK1R90.net]
- staticとauto
- 808 名前:デフォルトの名無しさん [2018/03/24(土) 10:38:33.14 ID:Z79Bg+7E0.net]
- ガンダムで説明できないうちは理解できてることにならないぞ。
- 809 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 10:49:46.91 ID:jOWDr2Es0.net]
- アインシュタインみたいなこと言ってんじゃねえよ
|

|