[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/25 02:13 / Filesize : 275 KB / Number-of Response : 1034
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 151



1 名前:デフォルトの名無しさん [2019/04/02(火) 11:23:37.62 ID:SQXqRaAc0.net]
!extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

970 名前:デフォルトの名無しさん [2019/06/16(日) 20:02:46.68 ID:5fyh92Dva.net]
まあしかし getchar() みたいにプログラムとは無関係な所から取ってきた値を返すとか、バッファやstatic変数で外部からアクセスできない変数の内容を返すみたいな処理は必要だから引数なしも必要だ。
グローバル変数やハードウエアの初期化処理だけまとめて書きたいなんて時にも使える。

971 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:22:18.78 ID:6QFVwEqYd.net]
○○Initialize()
的な関数の存在に違和感ないんだが

972 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:26:17.96 ID:rIa5AgZza.net]
クラスのメンバーの操作だとしても、だったらそのクラスのコンテキストを渡すのが正しいだろうとは思うけどね。
現実としてはまあ規模による。

973 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:40:48.32 ID:Mp4zqsM90.net]
プログラムの関数は数学の関数とは微妙に違うから仕方ない
仕方ないと思えない奴らが関数型言語を作った

兎に角Cでは本来の関数に制限するのは事実上不可能

974 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:47:50.76 ID:EhqtZL1+0.net]
functionって関数の他に機能って意味もあるけど、英語圏の人はどちらの意味で使ってるんだろうね?

975 名前: mailto:sage [2019/06/16(日) 21:15:12.39 ID:gDHKfsB60.net]
>>944
多分語義をわざわざ意識していないと思われ

976 名前:デフォルトの名無しさん [2019/06/16(日) 21:19:48.09 ID:paRCIAHRa.net]
>>942
オブジェクト指向言語のクラスだとプロパティでゲッターやセッター作る事があるが、ゲッターは普通は引数なしだな。
で、そういう言語ではだいたいはメソッドの引数なしで ()にしとけばC言語での(void)と同じ意味になる。

977 名前:蟻人間 mailto:sage [2019/06/16(日) 21:39:10.07 ID:KLVL0nwc0.net]
機能という意味で言いたいときは、functionalityという単語もある。

978 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 22:26:00.96 ID:rIa5AgZza.net]
ゲッターセッター自体が、本当にそれ要るのかって思うこと多いよ。
手元にインスタンス持ってるわけだしさ。



979 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:14:47.03 ID:2lhSAUjOM.net]
ゲッターセッターはインスタンス変数を隠蔽化することでインスタンス間の結合強度を下げるのが目的
なんでもなんでもインスタンス内部の構造に直接アクセスするとOOPの意味がない

980 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:22:32.20 ID:rIa5AgZza.net]
いや、ゲッター使うんだったら隠蔽できてないじゃん。

981 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:34:39.49 ID:Fv7+hlk/0.net]
昔ゲッターセッターってスレッドセーフにするための仕組みだと思ってた。
それくらいしか意味が思いつかなかった…

982 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:43:48.77 ID:3o8UCwiCa.net]
そうね、なんか前後に処理を入れるくらいの使い方はある。
でもそもそもその値を使う処理をそのクラスに持たせるのが隠蔽ということだね。

983 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:45:38.60 ID:7nwjMCFt0.net]
今の仕組み上での利点としては
GetterSetter作ることで
インターフェースに適合させれるようになる

Cは知らん

984 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:04:18.25 ID:0K02i6cy0.net]
Cのスレで

985 名前:言っても仕方ないが
オブジェクト指向においてクラス外からフィールドに直接アクセスするのは禁じ手だぞ
[]
[ここ壊れてます]

986 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:10:42.98 ID:seiOMGnS0.net]
getter/setterなんてうざいだけだぜ
メンバ変数直でいいじゃん

987 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:23:14.51 ID:YSrJE9j8a.net]
>>954
そうそう、だからゲッターは駄目なんだよね。
C++でclassとstructのアクセス範囲が異なる理由がわかってない人が多すぎる。

988 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:26:17.86 ID:0K02i6cy0.net]
>>955
お前には一生オブジェクト指向は無理だな



989 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:39:11.63 ID:YSrJE9j8a.net]
まあ、ゲッター使うのはバカ。
データとメソッドを集約しないのはオブジェクト指向ではない。
ゲッターとセッターしかないオブジェクトなんて構造体で充分。

990 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 01:11:23.59 ID:J2deS77t0.net]
たしかPythonだとgetterもsetterも推奨されてないんだっけ?

991 名前:デフォルトの名無しさん [2019/06/17(月) 02:13:20.34 ID:BSqpudUb0.net]
文字列クラスで文字数返すやつなんかはゲッターの一種だが、ああいうのは必用だよな。
文字数指定する事が出来るようにする場合もセッター必用だよな。

992 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 06:18:25.03 ID:6C3tyyZH0.net]
データメンバ直でもラッパーを挟めるなら問題なし

993 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 07:27:38.45 ID:yl5KJ/vEM.net]
問題ないというよりも下手な設計をとりあえずカプセル化する時はラッパー被せて誤魔化すしかない

994 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:27:04.42 ID:ikLTlFyV0.net]
ゲッタって仮想関数にする?

995 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:52:31.79 ID:sn1adIo3a.net]
ラッパーって関数に対して被せるもんだろ?
メンバー変数のラッパーってなんだよ

996 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:57:03.61 ID:mR1b1vjg0.net]
「メンバ書き換えたから更新よろしくな関数」の呼び出しで
やっと内部状態が変更するようなしくみ?

997 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 09:09:34.98 ID:8UjaS7YF0.net]
>>960
ゲッターとセッターは使わないのが主流

とくにゲッターとか名前からしておっかねーだろ

998 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 09:34:11.11 ID:sn1adIo3a.net]
真とかエンペラーとかいろいろあるしな



999 名前:デフォルトの名無しさん [2019/06/17(月) 12:37:41.39 ID:WHxj8IY7a.net]
>>966
え?でも値のセットや取得時に何か処理が必要なやつはゲッターやセッターではないの?
名前がそれっぽくなくて普通のメソッドだったとしても機能としてはそうなるよな。

1000 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 12:44:11.30 ID:6pEy3XEna.net]
>>968
だから、何故値を取得する必要があるのかと

1001 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:06:30.69 ID:0K02i6cy0.net]
値を取得する必要ガーとか馬鹿なのか?
主要言語の標準ライブラリにGetterを含まないクラスとかまず無いぞ

1002 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:27:51.70 ID:6pEy3XEna.net]
>>970
引数のvoid見たこともないのによくそんなこと言えるな…

1003 名前:デフォルトの名無しさん [2019/06/17(月) 13:33:44.73 ID:WHxj8IY7a.net]
>>969
例えばファイルデスクリプタのようなものもそのデスクリプタによって識別されるファイルに関する情報の読み書きをするオブジェクトと言えるが、それ使ってファイルのバイト数を取得するとかデータを読み書きするとか、普通にやるよね。

1004 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:42:27.76 ID:qKjcjk6x0.net]
猿でもわかるポインタって本誰か出せよ

1005 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:24:17.06 ID:6pEy3XEna.net]
>>968
そのオブジェクトの中で密接にデータと関連する処理だったらゲッターは使わんでしょう。this->hogeを直接使うだけ。
あとたぶんあなたの場合はセッターゲッターの神髄を知らんと思う。単に構造体のメンバーにアクセスするだけのメソッドをイメージしてもらえれば。

1006 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:25:01.27 ID:6pEy3XEna.net]
974は972あてね

1007 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:25:36.67 ID:FBMbqlks0.net]
>>968
https://dotup.org/uploda/dotup.org1874697.jpg
ゲッターはあぶない

1008 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:40:56.45 ID:lfEwbGXOM.net]
同一インスタンス内なら余計なことしなくても直接アクセスできる
セッターゲッターは他のインスタンスの変数にアクセスするための手段
オブジェクト間のメッセージパッシングにセッターやゲッターを利用する



1009 名前:デフォルトの名無しさん [2019/06/17(月) 14:41:55.67 ID:WHxj8IY7a.net]
>>974
あー。それでもリードオンリーにしたい時に言語にその機能がないならゲッターだけ作るよね。
Kotlinの場合はvalで済んじゃってしかも自動でゲッター作られてるけど。

で、真髄って何?

1010 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 15:00:44.76 ID:6pEy3XEna.net]
>>978
リードオンリーとか言わず、読ませなきゃいいじゃん

1011 名前:デフォルトの名無しさん [2019/06/17(月) 15:49:21.53 ID:WHxj8IY7a.net]
>>979
上で書いた文字列クラスの場合の文字数とかファイルのバイト数とか、外部から読めないとまずいものがあると思うんだが。

1012 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 15:57:28.98 ID:6pEy3XEna.net]
>>980
たとえばstd::stringのメソッドでgetってついてるのget_allocatorとgetlineくらいだよね。setなんてないし。
ゲッター感のあるやつ無くない?要らないのでは?

1013 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 16:10:03.98 ID:qeDnhEK2M.net]
メンバー変数はreadonlyなどの属性ではなくてprivateアクセス権限を設定して他オブジェクトから隠蔽するのが一般的

1014 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 17:25:37.86 ID:0K02i6cy0.net]
なんでC++とかいう後付けのオブジェクト指向もどき言語で延々と語ってるんだろうか…

1015 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 17:48:43.23 ID:6pEy3XEna.net]
>>983
そりゃもう、javaについで保守的だから。
他の意識高い感じの言語だとゲッターセッターなんて発想はありえないでしょ。

1016 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 17:52:05.72 ID:0K02i6cy0.net]
>>984
保守的?単なる継ぎ接ぎの欠陥言語だぞ

C#だとプロパティで隠蔽されてるが結局はGetter/Setterだな

1017 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:00:37.93 ID:6pEy3XEna.net]
>>985
つまり、Cの構造体アクセスは実質ゲッターセッターだという主張か?

1018 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:01:53.33 ID:0K02i6cy0.net]
>>986
お前は何を言ってるんだ…



1019 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:11:27.38 ID:6pEy3XEna.net]
>>987
引数void馬鹿を馬鹿にしてんだよ。わからんか?

1020 名前:蟻人間 mailto:sage [2019/06/17(月) 18:13:51.25 ID:Qf1//+vQd.net]
そろそろ次のスレ

1021 名前:デフォルトの名無しさん [2019/06/17(月) 18:24:49.71 ID:3L1/L9kLa.net]
>>981
うーん。C++のクラスで喩えられてもすがわからんなあ。C++この頃全然やってないし。
昔ちょっとC++Builder使ったことあるがDelphiの延長線上の使い方しかしなかったし。

とりあえずJavaで言うとそれは何にあたるんだ?
Kotlinでもいいぞ。

1022 名前:デフォルトの名無しさん [2019/06/17(月) 18:26:16.26 ID:3L1/L9kLa.net]
すが、じゃねえ、すぐだ。
スマホだと間違いが変になるな。

1023 名前:デフォルトの名無しさん [2019/06/17(月) 18:28:01.53 ID:3L1/L9kLa.net]
次スレ

C言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/

1024 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 19:42:03.79 ID:biel+EqR0.net]
>>992
>>2-3 あたりの
「次スレを作るときは…」の説明を書き足さなくて良いのかしら?
自分、その辺の正しい立て方を知らず下手に書き加えられないので指摘だけ。

1025 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 20:01:23.71 ID:vIcnvKOP0.net]
IDを非表示にする場合
!extend:none::1000:512

IDを表示し、強制コテハンは表示しない(5ch標準設定と同じ)
!extend:checked::1000:512

IDを表示し、IPアドレスを表示
!extend:checked:vvvv:1000:512

IDを表示し、強制コテハンを表示
(レスの名前欄に「ワッチョイ」「スプー」「ササクッテロ 」などのニックネームがつく)
!extend:checked:vvvvv:1000:512 ← 今はこれ

IDを表示し、IPアドレスと強制コテハンを表示
!extend:checked:vvvvvv:1000:512

RONIN使えばまた表示を消せるので、強制とは言いがたいが

1026 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 20:16:07.33 ID:/ODDlXVN0.net]
ああワッチョイ消してる奴ってRONIN使ってるのか
知らなかったな

1027 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 20:27:33.84 ID:IK9o4iD50.net]
密結合を避ける

1028 名前: mailto:sage [2019/06/17(月) 20:55:12.93 ID:mDiaA7dQ0.net]
>>995
RONIN 餅ですがワッチョイの消し方がわからないのです、消すつもりもないのですが…



1029 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 21:23:19.93 ID:J2deS77t0.net]
名前欄に!slip:verboseじゃないの?
コテハンとかはどうなるかまでは知らないけど

1030 名前: mailto:sage [2019/06/17(月) 21:26:41.57 ID:mDiaA7dQ0.net]
>>998
どれどれ、試してみましょうか…

1031 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 21:29:58.20 ID:6C3tyyZH0.net]
>>945
そんなことはどうでもいい
C99ではどうたらを早く説明しろ

 逃 げ ん な こ ら !

1032 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 10時間 6分 21秒

1033 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef