C++相談室 part154

■ このスレッドは過去ログ倉庫に格納されています
2021/01/08(金) 17:54:00.55ID:0DW9z0rL
※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/

テンプレここまで
2021/01/11(月) 00:43:54.84ID:KM6/Ii6v
posix平行宇宙論
43デフォルトの名無しさん
垢版 |
2021/01/11(月) 00:44:15.09ID:AtO8PUuj
それだと…CPUの負荷や調子によって…同時になるって…事だよ…。
44デフォルトの名無しさん
垢版 |
2021/01/11(月) 00:45:46.62ID:AtO8PUuj
mutex…危ういな…どうしよう…。運に任せて…諦めるか…。
45デフォルトの名無しさん
垢版 |
2021/01/11(月) 00:54:29.81ID:AtO8PUuj
運任せは辛い…。
46デフォルトの名無しさん
垢版 |
2021/01/11(月) 01:30:50.91ID:AtO8PUuj
https://stackoverflow.com/questions/7373202/what-happens-if-two-theads-lock-a-mutex-concurrently
大丈夫だと言っているが…ほんまかいな…と思います…迷信はつきもの。
2021/01/11(月) 01:37:51.07ID:KM6/Ii6v
テストプログラム作ってさっさと検証しろ無能
2021/01/11(月) 01:59:20.31ID:3nmpeNiQ
>>46
信用できないならソースやアセンブリ読めよ。ここで名無しに答えてもらっても、信用できないんだろ?
49デフォルトの名無しさん
垢版 |
2021/01/11(月) 03:08:34.69ID:KSKcxhht
MutexはOSに依存するので絶対に大丈夫ということはないですが、数々のトラブルを引き起こし最も懸念されたLinuxが安定してきてるので、現在では実用上問題がないレベルにあると思います。
2021/01/11(月) 03:36:14.65ID:dLrb5ZQk
マルチCPUでバスリクエストが同時に出た場合の制御なんて明確に定義されてんだろうが
OS依存だハード依存だと逃げているから見えない不安に怯えることになるんだよ
51デフォルトの名無しさん
垢版 |
2021/01/11(月) 06:01:13.69ID:vFi9Z+AQ
LinuxのMutexって使いにくいよね
俺はWindowsから入ったからMutexって名前付きが当たり前だと思ってたんだけどLinuxのMutexには名前がない
どうやって複数のプロセス間で同じMutexを使うんだよ・・・って悩んだ
共有メモリなんかでMutexのアドレスを受け渡しするらしいんだけどさ
面倒くさくなってLinux版の同期制御はファイルロックにしちゃった。。
52デフォルトの名無しさん
垢版 |
2021/01/11(月) 06:47:08.93ID:KSKcxhht
LinuxのファイルロックはNFSで(※私たちにはバグのように見える)仕様通りの動作をするので気を付けたほうが良いですよ。

ユーザーが指定したファイルやディレクトリを不用意に使用すると再現性の無いバグに悩まされます。
53デフォルトの名無しさん
垢版 |
2021/01/11(月) 06:56:23.61ID:vFi9Z+AQ
>>52
アドバイスありがとう
Linuxで共有メモリの使い方もよく分からなくて
共有メモリも書いてる途中で読み取りされたら困るから
「書いたよー」「読み終わったよー」ってプロセス間同期したいんだけどMutex受け渡しの前に同期処理って・・・
それで共有メモリの読み書きをファイルロックで同期してMutexを渡すかなーって考えてるうちに
もうファイルロックだけでいいんじゃないかってなってしまった

一般的にはどうやってやるのがよかったんだろ?
54デフォルトの名無しさん
垢版 |
2021/01/11(月) 07:35:12.79ID:KSKcxhht
>>53
結局、「NFSではバグります」と注意したうえでファイルロックを使うことが一般的に行われてるみたいですよ。

逆に言うと、NFSだけ気を付ければ、問題が起きないみたいです。
2021/01/11(月) 08:06:23.60ID:RSMcM3e3
ちょっとググっただけだけどそんなに難しいかなぁ?
https://www.geekpage.jp/programming/linux-network/book/07/7-41.php
56デフォルトの名無しさん
垢版 |
2021/01/11(月) 08:06:43.86ID:vFi9Z+AQ
>>54
ありがとう ちょと安心した
57デフォルトの名無しさん
垢版 |
2021/01/11(月) 08:16:58.50ID:vFi9Z+AQ
>>55
コード見てみましたけどMutexの作成と共有メモリの書き込みが終わってからforkしてますね
forkした親と子ならそれでもいいんでしょうけど
実際は親子ではないプロセス間でMutex使いたくなったりするじゃないですか
Mutexが作成される前や共有メモリへの書き込み完了前にスレーブがMutexを要求しに来ると困ります
2021/01/11(月) 08:38:54.12ID:WYfXTDe9
>>51
名前付きも普通にある
sem_open
名前はセマフォだが当然mutexとして使える

目的がメッセージのやり取りならmkfifoも使える
2021/01/11(月) 08:48:31.88ID:3OtB0f6U
mutexじゃなくて名前付きセマフォなら普通にプロセス間で使えなかったっけ?
2021/01/11(月) 09:14:02.58ID:RSMcM3e3
>>57
応用力ないの?
>>58-59みたいにセマフォ使うこともできるし、名前付き共有メモリー + Mutexでもいいだろ
61デフォルトの名無しさん
垢版 |
2021/01/11(月) 09:22:15.64ID:KSKcxhht
>>60
Linuxではファイルロックで良いよ。
62デフォルトの名無しさん
垢版 |
2021/01/11(月) 09:28:25.14ID:vFi9Z+AQ
セマフォのほうには名前付きあったんですね見落としてました
ありがとう!
63デフォルトの名無しさん
垢版 |
2021/01/11(月) 09:39:24.93ID:vFi9Z+AQ
あと別のところでソケットを排他リソースで使うというアイデアを教えてもらったことあります
同じポート番号をバインドできるのは1つだけだからこれを排他に使うという案
64デフォルトの名無しさん
垢版 |
2021/01/11(月) 09:52:46.06ID:KSKcxhht
3年ぶりの建設的なスレだな。
2021/01/11(月) 10:09:50.89ID:RSMcM3e3
>>61
ファイルロックはロックしたままプロセス死ぬとリブートしても解消できないのがね
2021/01/11(月) 10:39:47.37ID:sBoV/AFh
>>51
pthread周りはなんであんな仕様なのか謎
CPUのアーキテクチャーを深く知れば合理性を得心できるのかどうか、
67デフォルトの名無しさん
垢版 |
2021/01/11(月) 11:25:14.07ID:vFi9Z+AQ
>>65
それはファイルロック(flock関数)ではなく、単純にファイルの存在チェックをしているだけじゃないですか?
flockを使ったファイルロックならプロセス異常終了時にOSによってロックが解放されます
68デフォルトの名無しさん
垢版 |
2021/01/11(月) 12:46:20.78ID:vpEQZDgx
ミックスジュースよりセックスジュースが好きですね
2021/01/11(月) 14:25:33.73ID:EL34sMb+
唐突に何いいだすねん君は!
(‘д‘⊂彡☆))Д´)パーン <ミックスジュースよりセックスジュースが好きですね
2021/01/11(月) 14:41:16.25ID:dLrb5ZQk
ラブジュースだろ
71デフォルトの名無しさん
垢版 |
2021/01/11(月) 16:14:45.22ID:AtO8PUuj
39です…。
mutexの信頼性をずーと疑ってたら…POSIXスレッド…pthread_mutex_lockに行き着きました…
ブロックもするそうです…ソース見てたら…カーネルの様です…pthread_mutex_lock_fullであれば…atomic_compare_and_exchange_val_acq…などもあります…テストアンドセットです…
アトミック操作です…しかし…普通にmutexを実装してpthread_mutex_lock_fullが呼ばれるかは…
分かりません…どんなmutexライブラリも最終的に…このカーネルを呼んでるだけだと思います…
呼ばれてるのは…fullではなく…弱い方のpthread_mutex_lockだと仮定しても…カーネルを疑うなんて…
本当に…ナンセンスな話なので…一応…信用して使うことにします…。
72デフォルトの名無しさん
垢版 |
2021/01/11(月) 16:55:02.21ID:AtO8PUuj
39です…。
結局…fullでなくても…atomic_exchange_acqが呼ばれているようです…アトミック操作です…。
なので…みなさん…安心して使いましょう…。
73デフォルトの名無しさん
垢版 |
2021/01/11(月) 16:56:14.48ID:KSKcxhht
>>72
そこでやめずに、atomic_exchange_acqの中まで追いかけてみませんか?
74デフォルトの名無しさん
垢版 |
2021/01/11(月) 16:56:26.10ID:AtO8PUuj
https://blog.sakasin.net/pthread-mutex-with-glibc
ソースです…。
2021/01/11(月) 21:32:01.48ID:KM6/Ii6v
Debian woody の頃まで posix thread は使い物にならなかったが Debian etch からようやく使い物になった印象だな
当時から利用している身にしては
76デフォルトの名無しさん
垢版 |
2021/01/12(火) 05:50:41.37ID:pJAexhLb
わりと最近ですね。
77デフォルトの名無しさん
垢版 |
2021/01/12(火) 07:34:00.56ID:V95G+u6D
woodyって20年くらい前だっけ
最初はJavaVMもグリーンスレッドというVM内の仮想スレッド実装だったんだよね
あれもOSネイティブのスレッドが信用されてなかったからなのかな
もちろん、現在のJavaVMはOSのネイティブスレッド使う実装になってるけどね
78デフォルトの名無しさん
垢版 |
2021/01/12(火) 07:44:47.10ID:pJAexhLb
Javaといえばブラック何とかプロジェクトがSUNに文句言ってなかったっけ?
79デフォルトの名無しさん
垢版 |
2021/01/12(火) 07:45:53.88ID:pJAexhLb
Etchが2007年と書いてあるな。
2021/01/12(火) 09:08:57.41ID:e5lAHXYT
設計思想的なことについて質問があります。
クラスの使い方がよく分かりません。

僕が今何かを作ろうと思ったら、関数の集まりが引数や返り値のやり取りを通じて協調するような設計をしてしまいます。
この引数や返り値が多く複雑になったりしてきたらクラスを用いた設計を考える、という理解は正しいでしょうか?
2021/01/12(火) 09:22:47.73ID:XkW3hQXX
>>80
正しいかどうかは知らないし気にしないでいいと思うけど、
そういう場合はただのデータの集まりとして構造体(これもクラスの一種だけど)を使うだけでも簡単になるだろうね。
2021/01/12(火) 13:35:30.39ID:lxco4c0J
個人的には、一度無理にでも概念(ウインドウとか表示とか作ってるソフトの主要な概念)をクラス名にして作ってみるといいとおも
やってるうちに慣れてくる
83デフォルトの名無しさん
垢版 |
2021/01/12(火) 14:01:10.35ID:V95G+u6D
そうだね
なにかを題材にしてオブジェクト指向やってみるのがいいと思う
でもウインドウはどうかなー そもそもUIツールキットをある程度知らないといけないし
GUIってオブジェクト指向らしからぬ部分も多いので

もっとビジネスロジック中心の題材がいいと思うよ たとえば掲示板システムとか
板には複数のスレがあって、各スレの中には複数のレスが並んでて、スレの書き込むメソッドでレスが1つ増えてーみたいな
84デフォルトの名無しさん
垢版 |
2021/01/12(火) 15:56:33.61ID:LUlB/OIG
>>4 >>11
. を再定義したいと思った
2021/01/12(火) 17:32:55.18ID:+0XoTmdG
>>82
初歩的な質問なのですが、クラスってモノじゃなくて概念でも良いのでしょうか
つまり、歩く人のプログラムを作るとき、人というクラスが歩くというメソッドを持っていても良いし、歩くというクラスが一歩進むというメソッドを持っていても良いのでしょうか
言語の仕様上はもちろんどちらでも良いと思いますが、どちらの設計の方が筋が良いということはないと思って良いですか?
2021/01/12(火) 17:34:51.31ID:fQCYjk84
ナントカ系の関数群みたいに相互に関連し合っているものを
暗黙じゃなく明確化するのがクラスだよ
87デフォルトの名無しさん
垢版 |
2021/01/12(火) 17:38:10.34ID:V95G+u6D
>>85
「歩く」をクラスにするよりは「歩ける」をインターフェースにしたらどうかな
人間クラスに「歩ける」インターフェースを実装することで「歩く」メソッドがあることを保証できる

対象ドメインをどのようにモデル化するかは状況や要件次第
2021/01/12(火) 19:05:06.19ID:mPDSlMxM
メタファとして生き物がよく用いられるけどなんだかなあっていつも思う
2021/01/12(火) 19:50:41.34ID:YNFRivpW
>>87
「歩け」インターフェースを定義したらインスタンスが歩ける想定であることは自明なのでは…

ちなメソッドは一般にオブジェクトの状態変化を引き起こすブツなので
命令型プログラミングの範疇であり命令形で命名すうるが正しい

※ 個人の感想です
2021/01/12(火) 19:52:42.41ID:YNFRivpW
しかしインスタンスの生成というプロセスは関数型プログラミングから拝借しており、
命令型と関数型のいいとこ取りしようとして失敗した
classベースのオブジェクト志向は
91デフォルトの名無しさん
垢版 |
2021/01/12(火) 19:58:16.79ID:GTfU1r+6
何ベースのが成功なの?
2021/01/13(水) 09:25:15.89ID:X1FbeZvQ
場合によっては歩くクラスもありだと思うよ。
ゲームで次の行動を一つずつ記憶させたい場合とか。
commandパターン、mementoパターンでググって
93デフォルトの名無しさん
垢版 |
2021/01/13(水) 09:45:27.73ID:D0cZCa+j
歩くということは、位置が変化する。
現在位置は人オブジェクトのプロパティなのか?
それでええのか?
2021/01/13(水) 11:14:57.57ID:XODVGtfI
>>93
良くね?


>>87
インターフェースって継承される前提のものなんですよね?
どのクラスが「歩ける」を継承するんですか?
2021/01/13(水) 12:34:30.18ID:QVnLWQ3q
>>85
数値化できるものなら何でもオーケーだ
歩行を数値化するにはN個の関節を持つM本の脚をパラメータとし時間経過ごとの接地点と関節の位置をジェネレータみたいに連続的に返すような設計が考えられる
96デフォルトの名無しさん
垢版 |
2021/01/13(水) 13:12:01.01ID:D0cZCa+j
>>94
じゃあ将棋の駒オブジェクトはプロパティとして位置を持っているのか?
97デフォルトの名無しさん
垢版 |
2021/01/13(水) 14:09:32.74ID:D0cZCa+j
俺の考えるOOシステムでは、駒オブジェクトは盤面オブジェクトやルールブックオブジェクトへの参照を持っいる。

駒オブジェクトへ前へ3移動とメッセージを送ると、駒オブジェクトはルールブックオブジェクトと盤面オブジェクトを用いて、移動可能であれば盤面オブジェクトへ自身を移動するようメッセージングする。
2021/01/13(水) 15:31:14.00ID:Dg6tKq+M
intを継承してmyintクラスを作ることは可能ですか?
2021/01/13(水) 15:38:23.35ID:CyYDkVRJ
システム次第でしょ。
もしも将棋の駒が自律歩行多脚戦車だったら、GPSシステムがすべての位置情報を管理してるなんておかしいし。
100デフォルトの名無しさん
垢版 |
2021/01/13(水) 15:38:43.61ID:D0cZCa+j
enum class なら可能。
101デフォルトの名無しさん
垢版 |
2021/01/13(水) 20:01:32.91ID:D0cZCa+j
C++はテンプレートがあるので設計の詳細を先送りできる。
その特徴を生かせるように、プッシュ型を流行らせませんか?
プッシュ型は、前提が少ないので、利用者が自由に組み合わせることが出来ます。

これは、インターフェースによって事前に詳細を設計してしまう方式と真逆かもしれないが、組み合わせによって機能を作ることが出来まっする。
2021/01/13(水) 21:14:51.93ID:XHABqTxh
プッシュ型って何?
103デフォルトの名無しさん
垢版 |
2021/01/14(木) 06:54:42.42ID:mrWYZ3Pm
Caper や Bison でプッシュ型を調べてみるとわかると思います。
104デフォルトの名無しさん
垢版 |
2021/01/14(木) 06:59:25.06ID:mrWYZ3Pm
あらゆるソフトウェアで使いまわされるライブラリにおいて、詳細が既に決まっているのは不自由なことです。
2021/01/14(木) 07:12:21.89ID:FFXK54Rt
templateと比べてプッシュ型の利点が分からん。
106デフォルトの名無しさん
垢版 |
2021/01/14(木) 07:23:48.43ID:mrWYZ3Pm
>>105
プッシュ型はパーサーでよく使われます。
ユーザーが柔軟性を求めるからです。

Caperはプッシュ型、Bisonはパーサー側が文字を読む方式ですが、オプションとしてプッシュ型を選べます。
パーサにおいてプッシュ型とは、(パーサではなく)パーサを呼び出す側が文字を送り込みます。

それによって何が起きるでしょうか?
従来のパーサーは状態と共に行番号を保存します。
プッシュ型の場合、行番号を保存するのは呼び出し側です。

パーサーが読む文字とは何でしょうか?
プッシュ型において、Cではint、C++ではユニコード。コードポイントです。
文字デコードを行うのは、呼び出し側です。

では従来のパーサでは?
行番号を管理するためには、文字デコードもパーサーの仕事です。
つまりパーサーは大きな塊でアリ、組み合わせる部品ではありません。
107デフォルトの名無しさん
垢版 |
2021/01/14(木) 07:27:04.63ID:mrWYZ3Pm
プッシュ型はUNIXに通じるものがありますが、UNIXでは実現されませんでした。
108デフォルトの名無しさん
垢版 |
2021/01/14(木) 07:47:44.25ID:mrWYZ3Pm
パーサーは本来、構文解析が仕事です。
しかし、現状多くのパーサーは、構文解析以外の機能を密に結合している。

本来の仕事以外は分離して、小さな部品にすることで再利用性が高まる。
という感じですかね。

これはテンプレートと同じでもろ刃の剣でもあるんですよ。
詳細を設計しないんですから。

しかし、STLの寿命の長さを見て分かる通り、詳細が設計されていないという事は利用者が自由に設計できるという事で、使い出があるんです。
109デフォルトの名無しさん
垢版 |
2021/01/14(木) 07:48:23.53ID:mrWYZ3Pm
もちろん、パーサーに限った話ではないですよ。
例です。
110デフォルトの名無しさん
垢版 |
2021/01/14(木) 09:22:59.17ID:EIDQMz1r
みんながみんなパーサーを開発する側じゃないからなー
もっと身近な例はないですか?
このようなデザインパターンがプッシュ型だとこうなる、みたいな
111デフォルトの名無しさん
垢版 |
2021/01/14(木) 09:29:21.76ID:mrWYZ3Pm
>>110
使う側にとって良いことなんですよ。

それと、プッシュ型は万能ではないんですよ。
一部のコンポーネントの部品化に対して利益があるのです。
2021/01/14(木) 10:01:10.49ID:mp+NLhBe
>>111
身近な例はないかという問いに対しその回答は意味不明では?
113デフォルトの名無しさん
垢版 |
2021/01/14(木) 10:15:16.01ID:mrWYZ3Pm
まあそうですね。
すいませんでした。
114デフォルトの名無しさん
垢版 |
2021/01/14(木) 10:22:13.84ID:FFXK54Rt
身近な例で利点があるなら広めるのに協力するのもいいが今の時点で利点が分からん。
115デフォルトの名無しさん
垢版 |
2021/01/14(木) 15:40:36.18ID:qrpkNJTC
別にC++だけの問題じゃないんだけど…質問…例えば…エクスプローラのようにファイル一覧出すじゃん…
画像や動画は…サムネイルを出すじゃん…このサムネイルは非同期で更新になるじゃん…
一度開いたら…キャッシュから読み込みたいじゃん…このキャッシュの保存ってさぁ…一意にするのに…
ファイルパス・更新日時・サイズである程度一意になるけど…完璧な一意ではないじゃん…
同じ名前・同じ更新日時・同じサイズで上書きされたら、前の画像がサムネイルに出るじゃん…
どうすんの?
116デフォルトの名無しさん
垢版 |
2021/01/14(木) 15:42:53.95ID:qrpkNJTC
キャッシュなんてそんなものだから…それでいいのかなぁ…
2021/01/14(木) 15:53:35.11ID:mp+NLhBe
その気持ち悪い「...」をやめてくれ
118デフォルトの名無しさん
垢版 |
2021/01/14(木) 15:55:13.17ID:EIDQMz1r
ファイルパスと更新日時で一意になると考えていいでしょ
コンテンツが変更されれば更新日時が進むという前提で
それさえも許せないクリティカルなシステムならファイルの全バイト列から衝突率の低いハッシュ作るとかファイル読むのと変わらんことになる
クリティカルなシステムではキャッシュ使わんな
119デフォルトの名無しさん
垢版 |
2021/01/14(木) 16:05:02.51ID:qrpkNJTC
なるほど…。
2021/01/14(木) 16:09:33.34ID:9qLPLWCT
https://martinfowler.com/bliki/TwoHardThings.html
> There are only two hard things in Computer Science: cache invalidation and naming things.

計算機科学においては二つの難しいことがあります。
キャッシュの無効化と名前の付け方です。
2021/01/14(木) 16:16:29.09ID:9qLPLWCT
ファイルシステムによるけど iノード番号だったり
それに近い管理機構で一意に特定できる場合もあるんじゃないの。
サムネイルくらいなら雑でいいやという割り切りもあると思うけど、
ある程度は不整合がないようにする努力もしてると思う。
2021/01/14(木) 23:16:54.98ID:9gUF6PTW
特徴的な文体はblogでも見た!
2021/01/14(木) 23:49:25.09ID:9gUF6PTW
スヌープとLRUでおk
この2つでダメだという香具師は、
スヌーピングのロジック設計をサボっているか、
メモリをケチって必要量に未達なだけ
2021/01/16(土) 08:13:56.08ID:dLwYQ6PK
おはようございますみなさま、質問させてください

ユーザー定義クラスを作成し、循環参照を防止するためweak_ptrをメンバに持たせています。
そして任意の処理でshared_ptrをweak_ptrに代入し使用したいと思っておりました。
しかし、メンバ関数内部でweak_ptrを使用すると、式にはポインタ型が必要です、旨のエラーが出てしまいます。
調べてみたところ、lock()でshared_ptrに再度権利委譲するとshared_ptr側から動くのですが、私が初心者な事もあり何か釈然としません(我が儘でしょうか……)
一度weak_ptrに落とし込んだものを再度shared_ptrに戻す部分が引っかかっているのだと思います(気にしすぎですかね)

そこでお聞きしたいのですが、クラス内部で動的に定めたいと思っているweak_ptrを使う際に、これ以外の方法はありますでしょうか?
それとも上記の通りlock()で一時的なshared_ptrに束縛した方がいいのでしょうか?

朝から長文失礼しました
2021/01/16(土) 08:49:06.94ID:ld2GCDwz
ロックしないと知らない間に参照先のshared_ptrで持ってるオブジェクトが破壊されてても文句言えないけどそれでもいいの?
weak_ptrってそういうものだぞ
2021/01/16(土) 09:17:41.99ID:dLwYQ6PK
>>125
ありがとうございます。
おっしゃる通りだと思います。
納得いたしマスター!
2021/01/19(火) 02:35:16.36ID:y82ZfCrD
移譲って要は継承せずにオブジェクトとして使うってことですよね?
なぜ「移譲」なんてわけわからない名前がついてるんですか?
2021/01/19(火) 04:45:45.04ID:KGVX5wki
移譲じゃなくて委譲な。
転送でもいいと思うよ
2021/01/19(火) 07:52:05.16ID:Uy0+fZqK
代理、丸投げ
2021/01/19(火) 09:18:39.64ID:xem4SJ/U
日本語の問題だけど移譲は同じレベルに権限等を移すこと、委譲は下のレベルに移すことらしい
委譲は継承より権限の制限があるという含みがあるんだと思う
あくまで人間の組織での比喩なんだろうけど
2021/01/19(火) 09:54:48.36ID:QmODXpTw
名前付けるほどのことか?と問われればたしかにそう思う
クラス内で他のクラスオブジェクトを使ってるだけw
2021/01/19(火) 11:29:25.06ID:Bl6CuSRR
移譲コンストラクタってC++11まで存在しなかったの?
2021/01/19(火) 11:40:18.61ID:Zp03eKCw
>>132
はい。 C++11 で導入された機能です。
それまで存在しませんでした。
2021/01/19(火) 16:38:03.96ID:8JRMUdmW
C++03の頃のプログラミングめちゃくちゃ大変そうだね・・・
2021/01/19(火) 20:00:27.80ID:rn87bDt4
「オブジェクト指向?じゃあ継承しなきゃ!共通実装はみんな継承でポリモにしろ!」みたいなノリのクソ設計が溢れかえった時期があって
カウンターとして無理に継承せんでもオブジェクト持って使えばええんやでっていう事に名前付けたのが委譲とかコンポジションとか
しょうもないんだけど継承教に対抗するには名前が必要だったんよ
2021/01/19(火) 21:06:03.25ID:Zp03eKCw
>>134
そのとおりだよ!
前スレで C++11 (以降) に否定的な意見も出てるが、
使える状況であえて C++03 (以前) を選択したがる感覚はわかんね。
2021/01/19(火) 22:52:29.91ID:Bl6CuSRR
テンプレート使わなければC++03でもいける(かも)
2021/01/19(火) 23:09:23.44ID:7+t4BBWY
なんか、ここはどこ私はだあれなやついるなw
なんでテンプレートが出てくるのか
2021/01/19(火) 23:29:07.70ID:LToFUUAC
C++03にはテンプレート無いしな
2021/01/19(火) 23:43:32.07ID:7+t4BBWY
何を狙ってボケてんのかわからん
解説求む
2021/01/20(水) 19:27:35.22ID:kPiTytYK
C++スゲー=俺スゲーしたいだけの学生が増えたんだろ

>>134, >>136
エアプ乙
便利にはなったが、メタプログラミングやってても委譲コンストラクタ無くてもそんなに困らんかったぞ
メンバの初期化には関数の戻り値だって使えただろ、どこで困るんだ?
2021/01/20(水) 19:33:42.85ID:kPiTytYK
あ、委譲コンストラクタが無くても、の話であって03と11がどうこうじゃないよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況