エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
探検
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/12/28(金) 06:04:52.38ID:ufThBpcD
346デフォルトの名無しさん
2019/02/02(土) 11:01:27.11ID:tJohl//6347デフォルトの名無しさん
2019/02/02(土) 11:23:05.73ID:ZfwOhOL2 コルーチン拡張は提案段階なんだっけ?
MS界隈ならC++/WinRTで使用例があるけど
MS界隈ならC++/WinRTで使用例があるけど
348デフォルトの名無しさん
2019/02/02(土) 11:47:15.38ID:qgXcCvEo349デフォルトの名無しさん
2019/02/02(土) 13:08:31.83ID:cZfjknnV >>344
再帰includeとdefineの組み合わせでも大抵はなんとかなったりするなw
templateは型に縛られてるから安全な反面、不便なこともあるよね。
sjisとutf8が区別できないし。なぜchar8_tを作らなかった…(´・ω・`)
再帰includeとdefineの組み合わせでも大抵はなんとかなったりするなw
templateは型に縛られてるから安全な反面、不便なこともあるよね。
sjisとutf8が区別できないし。なぜchar8_tを作らなかった…(´・ω・`)
350デフォルトの名無しさん
2019/02/02(土) 13:11:59.53ID:OjPcxytf テンプレートよりObjective-Cのやり方の方が好き
351デフォルトの名無しさん
2019/02/03(日) 12:10:14.76ID:JIYTTgNa 江添なんて最新仕様知ってる俺スゲーやりたいだけの奴だからな。
まともに使えるプログラムを書いてるわけじゃない。
まともに使えるプログラムを書いてるわけじゃない。
352デフォルトの名無しさん
2019/02/03(日) 14:07:26.32ID:IhqR/Csp でもプログラム書くなんて誰でも出来るじゃん
353デフォルトの名無しさん
2019/02/03(日) 14:11:00.19ID:s/ZudwPt おまえのgithubさらせよ
354デフォルトの名無しさん
2019/02/03(日) 14:15:39.93ID:IhqR/Csp >>353
お前が先に晒せ
お前が先に晒せ
355デフォルトの名無しさん
2019/02/03(日) 14:56:06.74ID:nprxb46h きっとはぶられる
357デフォルトの名無しさん
2019/02/04(月) 12:56:22.82ID:Y0slw8we358デフォルトの名無しさん
2019/02/04(月) 13:07:21.17ID:qU4d2Hmv >>357
は?お前じゃあ江添より仕様に詳しくてC++のコンパイラを実装出来るような能力なのかね?ええ?
は?お前じゃあ江添より仕様に詳しくてC++のコンパイラを実装出来るような能力なのかね?ええ?
359デフォルトの名無しさん
2019/02/04(月) 14:02:36.47ID:zmkNdOJF 工学部生よりましやろ
360デフォルトの名無しさん
2019/02/04(月) 14:08:27.48ID:n76odGjc 例え世界一の物知りでもそんな口の効き方をする人とは
付き合いたくないな
RMSにはEMACSやgccといった作品があるから許される
付き合いたくないな
RMSにはEMACSやgccといった作品があるから許される
361デフォルトの名無しさん
2019/02/04(月) 14:56:20.34ID:iZ37iel0 この3冊は、日本人が作った神の書。
皆、基地外。基地外しか、こんな本を書けない
Linux プログラミング・インタフェース、Michael Kerrisk、2012
この本は、神の書と言われていて、翻訳本は日本しか出ていない。
著者は10年、man-pagesを書いてきた人で、翻訳者・アドバイスの千住治郎も、技術者
C++11/14 コア言語、江添 亮、2015
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
ドワンゴ江添は需要があれば、テンプレートの本を出そうか、なんて言ってるけど、既にこの本がある
C++テンプレートテクニック 第2版、
επιστημη(えぴすてーめー)・高橋 晶、2014
皆、基地外。基地外しか、こんな本を書けない
Linux プログラミング・インタフェース、Michael Kerrisk、2012
この本は、神の書と言われていて、翻訳本は日本しか出ていない。
著者は10年、man-pagesを書いてきた人で、翻訳者・アドバイスの千住治郎も、技術者
C++11/14 コア言語、江添 亮、2015
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
ドワンゴ江添は需要があれば、テンプレートの本を出そうか、なんて言ってるけど、既にこの本がある
C++テンプレートテクニック 第2版、
επιστημη(えぴすてーめー)・高橋 晶、2014
362デフォルトの名無しさん
2019/02/04(月) 15:06:30.08ID:zmkNdOJF ステマ宣伝乙
5ちゃんでは禁止
5ちゃんでは禁止
363デフォルトの名無しさん
2019/02/04(月) 15:58:27.96ID:n76odGjc Linuxの黎明期にman page 書いていたのは janneさん事、中谷千絵さんだよ
エピスメーテーさんは昔っから雑誌に記事を書いていたな
The Basicだった?
真ん中の人は知らないけどどんな貢献をしたの?
エピスメーテーさんは昔っから雑誌に記事を書いていたな
The Basicだった?
真ん中の人は知らないけどどんな貢献をしたの?
364はちみつ餃子 ◆8X2XSCHEME
2019/02/04(月) 16:09:06.48ID:kMmgpke2365デフォルトの名無しさん
2019/02/04(月) 16:27:32.33ID:n76odGjc366デフォルトの名無しさん
2019/02/04(月) 17:40:44.94ID:Y0slw8we367デフォルトの名無しさん
2019/02/04(月) 17:42:39.71ID:Y0slw8we >>358
本人様のご登場wwww
本人様のご登場wwww
368361
2019/02/04(月) 18:14:10.83ID:iZ37iel0 >361 の3冊は、単なる規格の文章ではなく、それをソースコードの実例にした所がすごい!
だから、プログラマーは皆、Kerrisk の本を枕にして寝ろって、言われている
たぶん、江添やMISRA‐C の本も、外国で発売されていれば、大絶賛されるはず!
だから、プログラマーは皆、Kerrisk の本を枕にして寝ろって、言われている
たぶん、江添やMISRA‐C の本も、外国で発売されていれば、大絶賛されるはず!
369デフォルトの名無しさん
2019/02/04(月) 19:01:28.11ID:GH1lEwiX エピスや高橋ageて江添sageってのもよくわからんな
立ち位置違うし江添は委員会の人間だから
仕様や提案について素晴らしいとかクソとか言う権利や責務がある
それをsageるってことは「現行仕様マンセー、標準規格に欠点など無い!」みたいなことか?
立ち位置違うし江添は委員会の人間だから
仕様や提案について素晴らしいとかクソとか言う権利や責務がある
それをsageるってことは「現行仕様マンセー、標準規格に欠点など無い!」みたいなことか?
371361
2019/02/04(月) 19:22:56.32ID:iZ37iel0 元々は、Kerrisk も、江添やMISRA‐C のメンバーも、
規格をソースコードの実例で、表示してやろうという、とんでもない企画!
よく規格厨みたいな香具師がいて、企画書を読めって言うけど、
文章で書かれてもわからないし、全く出来るようにならないから、業を煮やして書き始めた
こんな面倒くさいことを、何年も掛けて書くかね?
こういうのは、忍耐力がある日本人が得意なんだろう。
外人は、まずやらない
規格をソースコードの実例で、表示してやろうという、とんでもない企画!
よく規格厨みたいな香具師がいて、企画書を読めって言うけど、
文章で書かれてもわからないし、全く出来るようにならないから、業を煮やして書き始めた
こんな面倒くさいことを、何年も掛けて書くかね?
こういうのは、忍耐力がある日本人が得意なんだろう。
外人は、まずやらない
372デフォルトの名無しさん
2019/02/04(月) 19:24:18.62ID:n76odGjc MISRA はBOSCH を引き込み損なった時点で絵に描いた餅でしょうね
デンソーが勝利すれば勝ちの目も出て来るかもしれないが
デンソーが勝利すれば勝ちの目も出て来るかもしれないが
373デフォルトの名無しさん
2019/02/04(月) 19:29:03.26ID:Y0slw8we >>371
>規格をソースコードの実例で、表示してやろうという、とんでもない企画
いや言語の解説本は規格をわかりやすく、ソースコードを例示して解説するでしょ。
それがなければ、規格だけでいいわけで、解説にならない。
わかりやすく書こうとしてるけど、そこの熱意の持ち方と、おつむのレベルでほんとにわかりやすいかどうかが問題なんだろ。
>規格をソースコードの実例で、表示してやろうという、とんでもない企画
いや言語の解説本は規格をわかりやすく、ソースコードを例示して解説するでしょ。
それがなければ、規格だけでいいわけで、解説にならない。
わかりやすく書こうとしてるけど、そこの熱意の持ち方と、おつむのレベルでほんとにわかりやすいかどうかが問題なんだろ。
374デフォルトの名無しさん
2019/02/04(月) 19:32:47.98ID:GH1lEwiX そら商業目的の本だったらわかりやすく書くの当たり前だろ
江添の本は読んだことないから分からんけど
売られてる本とブログで比較してないか?
江添の本は読んだことないから分からんけど
売られてる本とブログで比較してないか?
375デフォルトの名無しさん
2019/02/04(月) 19:36:24.60ID:Y0slw8we >>371
>こういうのは、忍耐力がある日本人が得意なんだろう。
>外人は、まずやらない
K&R も Stroustrapも規格になるまえからやってますがな
ソース示してこつこつと。
何もプログラム言語だけじゃないわ。人に説くこと、伝道師のようなwriterは日本人よりむしろ、英米人に多い。
クヌースの The Art of Computer Programmingあたり読んでみ。
>こういうのは、忍耐力がある日本人が得意なんだろう。
>外人は、まずやらない
K&R も Stroustrapも規格になるまえからやってますがな
ソース示してこつこつと。
何もプログラム言語だけじゃないわ。人に説くこと、伝道師のようなwriterは日本人よりむしろ、英米人に多い。
クヌースの The Art of Computer Programmingあたり読んでみ。
376デフォルトの名無しさん
2019/02/04(月) 19:46:25.23ID:Y0slw8we >>374
反響見て、読んだやつにバグだしさせてたあとブログ印刷物なり、ebook販売するんだから
金取ろうが、無償でやるかはどーでもいい話
日本語のコンピュータ書籍なんて販売数からしてとてもとてもメシ食えないから
ほぼ実益のないめんどくさいだけの作業
ブログでわかりにくければ本になってもわかりにくいことは保証する
反響見て、読んだやつにバグだしさせてたあとブログ印刷物なり、ebook販売するんだから
金取ろうが、無償でやるかはどーでもいい話
日本語のコンピュータ書籍なんて販売数からしてとてもとてもメシ食えないから
ほぼ実益のないめんどくさいだけの作業
ブログでわかりにくければ本になってもわかりにくいことは保証する
377デフォルトの名無しさん
2019/02/04(月) 19:48:43.30ID:9WmylojK クヌースの4-1巻目は、かなりの分量をZDD/BDDの説明に割いていて
このアルゴリズムは北海道大学で日本人が考えた物だね
で、その江添さんという方はどの様な技術貢献をしたの?
このアルゴリズムは北海道大学で日本人が考えた物だね
で、その江添さんという方はどの様な技術貢献をしたの?
378デフォルトの名無しさん
2019/02/04(月) 20:02:32.24ID:Y0slw8we379デフォルトの名無しさん
2019/02/04(月) 20:32:13.56ID:GH1lEwiX まぁC++テンプレートテクニックがわかりやすい良書なのは同意するけど
高橋晶ってたまにテクニックのメリットを語るときに
デメリットに気づいてない(またはスルーしてる)ことがあるんだよな
わかりやすくても鵜呑みには出来ない
高橋晶ってたまにテクニックのメリットを語るときに
デメリットに気づいてない(またはスルーしてる)ことがあるんだよな
わかりやすくても鵜呑みには出来ない
380デフォルトの名無しさん
2019/02/04(月) 20:36:58.42ID:Y0slw8we ま、江添が好きならどーぞご勝手に俺は願い下げってだけ
381デフォルトの名無しさん
2019/02/04(月) 20:39:36.21ID:GH1lEwiX 好きとは言ってないよ
結局役に立つ&正確な情報を書いてるかどうかが全てだ
結局役に立つ&正確な情報を書いてるかどうかが全てだ
382デフォルトの名無しさん
2019/02/04(月) 20:41:05.88ID:GH1lEwiX というか江添のブログでも「あれ?おかしくね?」みたいなことあったから
どっちがどうとも言えないけど
どっちがどうとも言えないけど
383デフォルトの名無しさん
2019/02/04(月) 21:00:45.66ID:Y0slw8we だいたい
ドマンコ
とかいう社名が下品すぎる
ドマンコ
とかいう社名が下品すぎる
384デフォルトの名無しさん
2019/02/04(月) 22:23:14.32ID:ZVfvG47Q >>364
毎月題材がカウンタークラスの人…
毎月題材がカウンタークラスの人…
385デフォルトの名無しさん
2019/02/04(月) 23:23:10.64ID:Y0slw8we386デフォルトの名無しさん
2019/02/04(月) 23:47:34.63ID:xjVdC68S 型指定するのが嫌だから最初にautoを使うc++入門書籍を書こうとしてたり、
まともにプログラム開発してたら最新の仕様を追えないので開発しないとか言い出す奴とか
普通の精神してりゃ信用せんわな。
根本的にありゃ馬鹿だよ。
まともにプログラム開発してたら最新の仕様を追えないので開発しないとか言い出す奴とか
普通の精神してりゃ信用せんわな。
根本的にありゃ馬鹿だよ。
387デフォルトの名無しさん
2019/02/04(月) 23:59:20.89ID:GH1lEwiX >まともにプログラム開発してたら最新の仕様を追えないので開発しないとか言い出す奴とか
江添みたいに標準化委員会に属してたら正しいと思うけどね
何もコミュニティに貢献しない趣味グラマだったりライターでもない奴が言ってたらアホだが
江添みたいに標準化委員会に属してたら正しいと思うけどね
何もコミュニティに貢献しない趣味グラマだったりライターでもない奴が言ってたらアホだが
388デフォルトの名無しさん
2019/02/05(火) 01:34:09.47ID:PwKFrksX 趣味グラマにドワンゴが給料払ってるんだろwww
389デフォルトの名無しさん
2019/02/05(火) 06:14:00.98ID:sYtbTM3p すみません
n秒ごとに関数foo()を繰り返し実行するような、かつ「低負荷な」方法を教えてください。
n秒は、精度はだいたいでよくて、たぶんnは600(つまり10分)程度にしたいと思っています。
windows 10 で、gccで最新の標準C++ とboost C++ が使用可能です
よろしくお願いいたします
n秒ごとに関数foo()を繰り返し実行するような、かつ「低負荷な」方法を教えてください。
n秒は、精度はだいたいでよくて、たぶんnは600(つまり10分)程度にしたいと思っています。
windows 10 で、gccで最新の標準C++ とboost C++ が使用可能です
よろしくお願いいたします
390はちみつ餃子 ◆8X2XSCHEME
2019/02/05(火) 06:20:20.09ID:VmiK9YL/391389
2019/02/05(火) 06:57:10.23ID:sYtbTM3p >>390
windows API をつかう方法で行ってみます
ありがとうございます。
標準C++ で導入された
thread とchrono を用いて、while (1 )を回すという方法がGoogle検索で 出てきますが、低負荷な方が良いので、windows API で行ってみます。
ありがとうございます。
windows API をつかう方法で行ってみます
ありがとうございます。
標準C++ で導入された
thread とchrono を用いて、while (1 )を回すという方法がGoogle検索で 出てきますが、低負荷な方が良いので、windows API で行ってみます。
ありがとうございます。
392デフォルトの名無しさん
2019/02/05(火) 07:12:26.12ID:kZRbw8C2 whileは単なる無限ループじゃなく、スレッドが立ち上がるまで、sleep で CPU を眠らせてるんじゃないの?
whileだけだと、負荷かかるし、sleep一発だと、繰り返し待ちできないから
whileだけだと、負荷かかるし、sleep一発だと、繰り返し待ちできないから
393デフォルトの名無しさん
2019/02/05(火) 07:23:19.83ID:kZRbw8C2 https://ja.cppreference.com/w/cpp/compiler_support
gccは並列STLまだ実装できてないんだな。がかーり
C++2xは後回しでいいから先に実装してもらいたいな
msvcがしらん間にgccを上回るC++17準拠状況になってるんだな
msがかなり頑張ってるのがかなり意外
gccは並列STLまだ実装できてないんだな。がかーり
C++2xは後回しでいいから先に実装してもらいたいな
msvcがしらん間にgccを上回るC++17準拠状況になってるんだな
msがかなり頑張ってるのがかなり意外
394デフォルトの名無しさん
2019/02/05(火) 10:24:17.44ID:Jquzc2Ph 趣味グラマーって本職が焼そば職人だっけ
395デフォルトの名無しさん
2019/02/05(火) 10:36:43.43ID:PCiHKxWL MSが標準をわざと外して潰し合う戦略を取ってたのは遥か昔
今は協調してシェアを取り込んでから独占する戦略がメイン
今は協調してシェアを取り込んでから独占する戦略がメイン
396デフォルトの名無しさん
2019/02/05(火) 13:32:56.11ID:HSCecGQW >>394
ブロガーで良くね?
ブロガーで良くね?
397デフォルトの名無しさん
2019/02/05(火) 18:47:37.04ID:VoURnPvV スパゲッティーでは?
398デフォルトの名無しさん
2019/02/05(火) 21:03:29.46ID:6rjCuhxB >>396
つ ttps://cpplover.blogspot.com/2016/05/2016.html
つ ttps://cpplover.blogspot.com/2016/05/2016.html
399デフォルトの名無しさん
2019/02/06(水) 08:14:04.23ID:QvJUH+Yd >>394
Oishii Sru Paの話?
Oishii Sru Paの話?
400デフォルトの名無しさん
2019/02/09(土) 10:04:34.12ID:Js3eMSlM 6
だまれ朝鮮人
失せろ
だまれ朝鮮人
失せろ
401デフォルトの名無しさん
2019/02/09(土) 13:43:15.52ID:n731AUSx Class TA{
public:
TB B;
}
Class TB{
・・・
}
Class TA::TA(){ //コンストラクタ
B = new TB;
}
で、TAのデストラクタが走った時点でBも一緒に消えるんですかね。
それともTAのデストラクタで delete B が必要なんですかね。
public:
TB B;
}
Class TB{
・・・
}
Class TA::TA(){ //コンストラクタ
B = new TB;
}
で、TAのデストラクタが走った時点でBも一緒に消えるんですかね。
それともTAのデストラクタで delete B が必要なんですかね。
403デフォルトの名無しさん
2019/02/09(土) 14:24:00.17ID:6TG0Gkwe 必ずというわけではないよ
>>403
理解はしますが薦める気にはならないのです…
理解はしますが薦める気にはならないのです…
405デフォルトの名無しさん
2019/02/09(土) 15:47:27.40ID:YAWSonmT >B = new TB;
エラーになるんじゃね?
エラーになるんじゃね?
406デフォルトの名無しさん
2019/02/09(土) 16:20:31.91ID:NnmcfWng >>405
それぐらいは忖度してやれよ
それぐらいは忖度してやれよ
407デフォルトの名無しさん
2019/02/10(日) 13:20:38.44ID:MWi64iyD メンバ変数にクラスを持つときはポインタ型にしてコピーコンストラクタを作るべきですか?
それともクラスの実体を持たせても大差ありませんか?
それともクラスの実体を持たせても大差ありませんか?
408デフォルトの名無しさん
2019/02/10(日) 13:21:20.82ID:XMMc9iis クラスと用途による
409デフォルトの名無しさん
2019/02/10(日) 13:40:02.39ID:Ix0Ul5tp 実体で用が足りるならすべて実体でよい
効率云々はまず一通り動くものが出来上がった上でそこが問題になってから考えろ
効率云々はまず一通り動くものが出来上がった上でそこが問題になってから考えろ
410デフォルトの名無しさん
2019/02/10(日) 13:41:09.49ID:MWi64iyD わかりました
ありがとうございます
ありがとうございます
411デフォルトの名無しさん
2019/02/10(日) 14:15:19.12ID:0+1G/wKU 値型とエンティティを意識して作って下さい
エンティティはスマポで管理、値型は実体を持たせるべきでしょう
エンティティはスマポで管理、値型は実体を持たせるべきでしょう
412デフォルトの名無しさん
2019/02/10(日) 14:26:23.71ID:KPch74RC エンティエィって何?
定性的な定義を頼むわ
定性的な定義を頼むわ
413デフォルトの名無しさん
2019/02/10(日) 14:30:03.09ID:0+1G/wKU >>412
インスタンスがアイデンティティを持つならエンティティ
インスタンスがアイデンティティを持つならエンティティ
415デフォルトの名無しさん
2019/02/10(日) 15:16:29.18ID:sKzQuR0e あーやだやだ
こういう宗教じみた設計論語るやつ
こういう宗教じみた設計論語るやつ
416デフォルトの名無しさん
2019/02/10(日) 15:16:40.47ID:0+1G/wKU >>414
値です
値です
417デフォルトの名無しさん
2019/02/10(日) 15:17:40.51ID:0+1G/wKU >>415
現実を見据えて追求すると自然と出てくる答えです
現実を見据えて追求すると自然と出てくる答えです
418デフォルトの名無しさん
2019/02/10(日) 16:25:18.62ID:scT3207q 親クラスとライフサイクルが同じか数値型なら実体、そうでないならポインタでいいだろ。
動的確保よりコピーやmoveのほうがコストが低い場合とか検討の余地はあるけど、考えすぎると禿げる。
動的確保よりコピーやmoveのほうがコストが低い場合とか検討の余地はあるけど、考えすぎると禿げる。
419デフォルトの名無しさん
2019/02/10(日) 16:31:34.44ID:25jgEgQt >>401
デストラクタは virtual に汁
デストラクタは virtual に汁
420デフォルトの名無しさん
2019/02/10(日) 20:26:50.17ID:EWmLbbO6 どうせそこまで最適化も厳密なメモリ管理も必要なプログラムじゃないだろ。
421デフォルトの名無しさん
2019/02/10(日) 21:57:11.00ID:sKzQuR0e >>417
ほらね、こういう精神論がでてくる
ほらね、こういう精神論がでてくる
422デフォルトの名無しさん
2019/02/11(月) 01:02:52.04ID:QKPibkAC 組み込み以外に使い道あるんですか?
423デフォルトの名無しさん
2019/02/11(月) 07:24:34.72ID:KN5ZTrY9 OS作ったり、ブラウザ作ったり、3Dバリバリのゲームを作ったり、他の言語向けに機械学習や科技計算等のライブラリを作ったり、いろいろあるよ
424デフォルトの名無しさん
2019/02/11(月) 12:01:51.83ID:itY+kGJR RubyはC++が嫌いだからCで書かれている
425デフォルトの名無しさん
2019/02/11(月) 12:06:46.94ID:QKPibkAC426デフォルトの名無しさん
2019/02/11(月) 12:32:11.46ID:PRVQuzHN 古い例だとニコニコ動画がC++
まあおかげで開発がスケールせずオワコン化したわけだが
まあおかげで開発がスケールせずオワコン化したわけだが
427デフォルトの名無しさん
2019/02/11(月) 12:32:14.48ID:itY+kGJR the door is open
428デフォルトの名無しさん
2019/02/11(月) 12:43:40.65ID:MmPS3pUZ >>425
聞いてばっかりじゃなくてお前がどういうものを探しているか書いたら?
聞いてばっかりじゃなくてお前がどういうものを探しているか書いたら?
429デフォルトの名無しさん
2019/02/11(月) 13:10:19.37ID:Y0EVtjJ+ CADとか画像処理とかビット演算系アルゴリズム(cf.ZDD)なんかは
まだまだ他の言語には負けないね
まだまだ他の言語には負けないね
431デフォルトの名無しさん
2019/02/11(月) 13:51:23.27ID:awXFg/MG JavaからC++勉強中です
C++の場合、他のクラスのオブジェクトを複数持たせるときは、一般的にどうするんでしょうか
・コンテナにオブジェクトそのものを突っ込む(一番わかりやすいけど、ムーブの定義忘れとかでミスが出そう)
・コンテナにオブジェクトへのポインタを持たせる(コンテナ解放時に、クラスごとに同じようなメモリ解放処理書くのかしら)
・コンテナにポインタをスマートポインタで持たせる
辺りをネットで読ませてもらいましたが、こんな感じで良いんでしょうか?
不勉強な上、他のオブジェクト持つという基本的なことなので、なんかもっと簡単な方法を見落としてる気がしてしまいまして
C++の場合、他のクラスのオブジェクトを複数持たせるときは、一般的にどうするんでしょうか
・コンテナにオブジェクトそのものを突っ込む(一番わかりやすいけど、ムーブの定義忘れとかでミスが出そう)
・コンテナにオブジェクトへのポインタを持たせる(コンテナ解放時に、クラスごとに同じようなメモリ解放処理書くのかしら)
・コンテナにポインタをスマートポインタで持たせる
辺りをネットで読ませてもらいましたが、こんな感じで良いんでしょうか?
不勉強な上、他のオブジェクト持つという基本的なことなので、なんかもっと簡単な方法を見落としてる気がしてしまいまして
432デフォルトの名無しさん
2019/02/11(月) 13:54:24.78ID:QKPibkAC >>431
時と場合によりますので一般的な答えはありません
時と場合によりますので一般的な答えはありません
433さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:06:14.14ID:fD0IDjkv >>431
Javaのオブジェクト参照はC++のポインタに該当する。
C++のオブジェクトは、型を持ったバイト列だと考えていい。
C++で自動変数を宣言すると、スタックにバイト列が割り当てられる。
newやスマポやコンテナを使うと、ポインタによりヒープでメモリーが割り当てられる。
ポインタも型を持ったバイト列。ポインタは配列のように周りのメモリーにアクセスできる。
C++のクラスは構造体に関数群を追加したもの。C++でクラスを継承すると、関数群とバイト列を引き継いだサブクラスになる。
Javaのオブジェクト参照はC++のポインタに該当する。
C++のオブジェクトは、型を持ったバイト列だと考えていい。
C++で自動変数を宣言すると、スタックにバイト列が割り当てられる。
newやスマポやコンテナを使うと、ポインタによりヒープでメモリーが割り当てられる。
ポインタも型を持ったバイト列。ポインタは配列のように周りのメモリーにアクセスできる。
C++のクラスは構造体に関数群を追加したもの。C++でクラスを継承すると、関数群とバイト列を引き継いだサブクラスになる。
434デフォルトの名無しさん
2019/02/11(月) 14:12:14.41ID:0TxoCFW6 >>431
大体、その3つの通りで、そこに述べられたものの上から優先的に選ぶ。
つまり、普通にメンバ変数にオブジェクトとして宣言するのがC++では
最も効率が良くて伝統的な書き方。それでは問題が生じる場合にオブジェクトの
ポインタとして持たせる。スマートポインタは後になって導入されたもので、
人気があるものではないので無視して良い。
二番目のポインタとして持たせるのは、例えば、今定義している最中の
クラス(自分自身)と同じ型のデータで、子どもや親にあたるデータへ
リンクを作りたいようなときか、または、ある基本クラスを継承した
色々なクラスのオブジェクトを持ちたい場合に用いる。
大体、その3つの通りで、そこに述べられたものの上から優先的に選ぶ。
つまり、普通にメンバ変数にオブジェクトとして宣言するのがC++では
最も効率が良くて伝統的な書き方。それでは問題が生じる場合にオブジェクトの
ポインタとして持たせる。スマートポインタは後になって導入されたもので、
人気があるものではないので無視して良い。
二番目のポインタとして持たせるのは、例えば、今定義している最中の
クラス(自分自身)と同じ型のデータで、子どもや親にあたるデータへ
リンクを作りたいようなときか、または、ある基本クラスを継承した
色々なクラスのオブジェクトを持ちたい場合に用いる。
435さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:16:41.10ID:fD0IDjkv C/C++では、sizeofキーワードを使えば、簡単にvoid以外の型のサイズがコンパイル時に取得できる。Javaではオブジェクトのサイズを簡単に取得することはできない。
C/C++はよくオブジェクトのサイズやバイトの並びを意識してプログラミングする。
C/C++はよくオブジェクトのサイズやバイトの並びを意識してプログラミングする。
436デフォルトの名無しさん
2019/02/11(月) 14:17:25.55ID:a3vDiVrE 結局CのポインタってJavaとかの言語で表すなら何なんだ?
437さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:23:20.42ID:fD0IDjkv なぜなら、例えばスタックに巨大なデータを割り当てると、スタックオーバーフローというエラーが発生するし、
ヒープだって、巨大なデータの割り当ては失敗することがある。
また、構造体を変更すると、構造体のサイズやデータ構造が変化して、互換性の問題が発生することがある。
ヒープだって、巨大なデータの割り当ては失敗することがある。
また、構造体を変更すると、構造体のサイズやデータ構造が変化して、互換性の問題が発生することがある。
438デフォルトの名無しさん
2019/02/11(月) 14:24:23.31ID:awXFg/MG >>434氏他
丁度今、ウェブ上のC++で書かれたCompositeパターンのソースを読ませて頂いてました
正に2番目で実装されてましたが、都度メモリ解放処理書くくらい当たり前なんですね、流石C++です
独学なもんで、こうはっきり言ってもらえると本当にありがたいです、使い分けて行きたいと思います
他の皆様もありがとうございました、勉強になりました
丁度今、ウェブ上のC++で書かれたCompositeパターンのソースを読ませて頂いてました
正に2番目で実装されてましたが、都度メモリ解放処理書くくらい当たり前なんですね、流石C++です
独学なもんで、こうはっきり言ってもらえると本当にありがたいです、使い分けて行きたいと思います
他の皆様もありがとうございました、勉強になりました
439さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:34:10.39ID:fD0IDjkv >>436
Javaの動的配列はCのポインタに近いが、Javaの配列では危険なアクセスは制限されているし、参照カウントで管理されている点が異なる。
Javaのオブジェクト参照は、参照カウントで管理されており、C++の構造体/クラス型に対するstd::shared_ptrに該当する。
Javaの動的配列はCのポインタに近いが、Javaの配列では危険なアクセスは制限されているし、参照カウントで管理されている点が異なる。
Javaのオブジェクト参照は、参照カウントで管理されており、C++の構造体/クラス型に対するstd::shared_ptrに該当する。
440さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:37:16.50ID:BEdrdhIs しかし、std::shared_ptrはヌルポを指定できるが、Javaはできない。
441デフォルトの名無しさん
2019/02/11(月) 14:49:43.57ID:0TxoCFW6 >>438
C++ は、デストラクタに必ずメモリ解放処理を書いておけば、そんなに
メモリーリークを気にすることはない。多くの場合にはそれで完全に処理できるから。
次のように書くだけで、ほとんどの場合、メモリーリークは起きない:
class CMyClass {
BYTE *m_pBuf;
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
C++ は、デストラクタに必ずメモリ解放処理を書いておけば、そんなに
メモリーリークを気にすることはない。多くの場合にはそれで完全に処理できるから。
次のように書くだけで、ほとんどの場合、メモリーリークは起きない:
class CMyClass {
BYTE *m_pBuf;
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
442デフォルトの名無しさん
2019/02/11(月) 14:52:47.12ID:dGdUrFsa すごく古い書き方だ
444デフォルトの名無しさん
2019/02/11(月) 14:55:46.62ID:DnOcmNTU 確かに、人に教えるレベルじゃないね
445デフォルトの名無しさん
2019/02/11(月) 14:56:36.09ID:0TxoCFW6 >>441
正しくは、次のようにアクセス制御のための「public :」を書かないといけない。
class CMyClass {
protected :
BYTE *m_pBuf; // 高速化のため、自動的には初期化はされないのでコンストラクタで初期化する。
public :
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
なお、必要に応じて、コンストラクタの中で、m_pBuf = new BYTE [xxx]; のように書いても良い。
それと、BYTE は、「オブジェクト」ではないので、あなたの書いているような場合には、
BYTE *m_pBuf の部分を CSomeObject m_pObj; のように変えて、m_pObj = new CSomeObject;
のようにする。
正しくは、次のようにアクセス制御のための「public :」を書かないといけない。
class CMyClass {
protected :
BYTE *m_pBuf; // 高速化のため、自動的には初期化はされないのでコンストラクタで初期化する。
public :
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
なお、必要に応じて、コンストラクタの中で、m_pBuf = new BYTE [xxx]; のように書いても良い。
それと、BYTE は、「オブジェクト」ではないので、あなたの書いているような場合には、
BYTE *m_pBuf の部分を CSomeObject m_pObj; のように変えて、m_pObj = new CSomeObject;
のようにする。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- まみちゃん
- ちっしゃーねーな。俺が習近平のアナルに武力侵攻してきてやるよ
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
- Doraemon's Solus
