[過去ログ] C++相談室 part164 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
707
(4): (ワッチョイ caad-VnR5) 2023/08/29(火)16:30 ID:2MvLEdvj0(1) AAS
ヘッダにインターフェースだけ書いてcppにインプリメントクラスを定義して隠蔽するのって
ライブラリとかフレームワークだと意味あるけどアプリケーションレベルの実装でやる意味って無いですよね?
708: はちみつ餃子◆8X2XSCHEME (ワッチョイ a13e-aWw4) 2023/08/29(火)16:40 ID:s7G+g/ai0(1/2) AAS
>>707
インターフェースって何?
709: (ワッチョイ d95f-1fgM) 2023/08/29(火)16:40 ID:Gj9jSZac0(1) AAS
インターフェースが何を指すか次第だけど、たぶんPimplイディオムのことかな?
ライブラリみたいに境界がかっちりしてないならそうかもね
710: 蟻人間◆T6xkBnTXz7B0 (スフッ Sdea-fyEs) 2023/08/29(火)16:40 ID:A1BJ1LVxd(1) AAS
>>707
ビルド時間を短縮する目的での隠蔽に使われることはある。隠蔽っていろいろ便利だから。
711: はちみつ餃子◆8X2XSCHEME (ワッチョイ a13e-aWw4) 2023/08/29(火)17:08 ID:s7G+g/ai0(2/2) AAS
pimpl は疎結合にできる分だけ
差分ビルドでコンパイルする範囲が
小さくなるから特に巨大なプログラムの開発では
ビルド時間を短縮する意味はあるはずだが
余計な構造を挟む煩わしさと比べて
割にあうのはよっぽど極端な場合に限ると思われている。
(意味はあるが意味のある状況は限定的)
712: (ワッチョイ a910-/+sI) 2023/08/29(火)22:48 ID:fHM5F2qI0(1/2) AAS
>>707
大きなアプリを、元請け社の元で複数の下請けが作っている場合、
お金の流れが全然違う他社のコードとリンクする事はあるよね。

で、紳士協定で「設計書で使っていいと言ってる機能だけ外部から使って」としても
約束を破るバカモノがいる場合もある。
信頼できない他社から自社の身を守る(徹夜で他社のバグ解析に付き合わされる事を防ぐ)など
レイヤー化する事には、もしかしたら意味があるかも知れないね

悲しい&バカらしいかも知れないけど

あとは逆に、自社の実装バグを見つけてアッー!ってなった時に、インタフェースを守ってる他社に、自社の実装変更&リリースによる「再ビルド要」の迷惑をかけてしまう事を防ぐ、意味はあるかも知れない
713: (ワッチョイ a910-/+sI) 2023/08/29(火)22:49 ID:fHM5F2qI0(2/2) AAS
いや、分からんな、ゴメン
714: (ワッチョイ 2501-xDGp) 2023/08/29(火)22:55 ID:82ATxlW40(1/2) AAS
デフォルトでpimplの俺は少数派か...
715
(1): (ワッチョイ 2501-xDGp) 2023/08/29(火)23:23 ID:82ATxlW40(2/2) AAS
C++はCの構造体をクラスに流用したからメンバー変数が見えてるけど
pimplのように隠れて然るべきが俺の持論
最適化の段階でinline化したい関数で触っている変数のみ
pimplの隠れた構造体から表の構造体に移動させているな
面倒くさくないかって? テンプレート用意してるから全然
716: (ワッチョイ 15b3-NdIe) 2023/08/30(水)00:04 ID:mW2zyf/K0(1/2) AAS
C++には不思議な魅力がある
C#
717
(1): (ワッチョイ 15b3-NdIe) 2023/08/30(水)00:05 ID:mW2zyf/K0(2/2) AAS
なんか途中で書き込みに行きやがった
JDimバグってないか???
718: はちみつ餃子◆8X2XSCHEME (ワッチョイ a13e-e+8E) 2023/08/30(水)00:13 ID:9akroxuQ0(1) AAS
>>715
隠すべきものが隠せていないのはそうだけど構造体を流用したことというよりも、
各翻訳単位でコンパイルしてからリンクするという C の手順を踏襲した都合だと思う。
他の翻訳単位の情報を見ずにコンパイルできる状況にするということを曲げないなら
オブジェクトの大きさを確定するのに必要な情報をクラス定義内に書く仕組みにせざるを得ない。
719
(1): (ワッチョイ 355f-vHpx) 2023/08/30(水)12:34 ID:biy0pv8/0(1) AAS
>707 が言ってるのはたぶん pimpl じゃなくて抽象クラス(=インターフェースクラス)を使った隠蔽じゃないかな?
pimpl より楽なので新規クラスではこっちしか使わなくなった。
720: (ブーイモ MMea-C1Tt) 2023/08/30(水)15:13 ID:STopcx5aM(1) AAS
>>719
メンバー関数の宣言が重複するのが
こちらは嫌なところかなぁ
721: (ワッチョイ 3e79-FVin) 2023/08/30(水)16:07 ID:bGhOLdki0(1) AAS
pimplなんてCでは普通のテクニックだったのにC++はいちいち大げさだなあ
722: (ワッチョイ 86fb-1XyZ) 2023/08/30(水)19:39 ID:rrx0kAlJ0(1) AAS
オタク界隈やと呼吸レベルで使いこなすよな
723: (スップ Sdea-0Z8Z) 2023/08/31(木)07:08 ID:wYoApzHMd(1) AAS
>>717
手元がバグってるだけじゃないかな(名推理)
724: (ワッチョイ c328-9M69) 2023/09/03(日)20:40 ID:uJA/UdoJ0(1) AAS
pimplのクラスか構造体の宣言だけ行うところでC++Testに文句言われる……
725: (アウアウウー Sae7-fXI3) 2023/09/04(月)10:15 ID:/ASAZOX6a(1) AAS
Rust使い過ぎてC/C++でclassとstructに;付け忘れはあるある
726
(2): (ワッチョイ 3378-+GqY) 2023/09/05(火)01:10 ID:6M2Epndy0(1/2) AAS
templateを使わなきゃpimplなんか必要ないだろ。
1-
あと 276 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.013s