- 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
- 910 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 14:56:26.65 ID:6Rxhp4270.net]
- アセンブラやらせてみる。
- 911 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 15:05:09.54 ID:AQvHkPsD0.net]
- >>881
文脈による 汎用機
- 912 名前:だと二次キャッシュをバッファストレージなんて言ったりすることもあるし []
- [ここ壊れてます]
- 913 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:36:32.38 ID:TPMloxQtM.net]
- >>875
本体がパンツ下ろしたら影分身も職場でパンツ下ろすんですね分かります
- 914 名前:デフォルトの名無しさん [2019/06/14(金) 17:45:59.79 ID:zWOLB0k60.net]
- ポインタがよくわからないんだけど、普通にメモリアドレス==ポインタって認識なの?
int i; int *p=&i; の時に変数iのポインタであるpっていういい方は正しいですか
- 915 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:52:24.52 ID:f7k/n5Cq0.net]
- メモリアドレスは格納されるけど
メモリアドレス==ポインタっていうのは違う気がする nullだのvoidだのもあるし
- 916 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:58:41.54 ID:Soq0+PVxa.net]
- iのポインタを格納してるポインタ変数p
値自体を問題にするときはアドレスだが、プログラム中で操作の対象となってる場合はポインタって感じだな。
- 917 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:21:37.60 ID:Js4PARtC0.net]
- >>886
ポインタはメモリアドレスと型もってて メモリアドレスからのデータをその型として解釈する
- 918 名前:デフォルトの名無しさん [2019/06/14(金) 18:23:47.92 ID:zWOLB0k60.net]
- なるほど、なんとなくわかったありがとう。混乱の原因はポインタっていう言葉がいろんな使われ方してるからだった。
- 919 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:25:31.19 ID:Kaq8zorwa.net]
- こう書くとまた荒れそうだが、ポインターとはアドレスが入った変数である、というのは正しい。
NULLは0番地を特別扱いしてるだけだし、void *もあくまでアドレスだ。
- 920 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:32:50.01 ID:N06YB3IUM.net]
- >>887
nullはまだしもvoidは関係なくね?
- 921 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:34:58.75 ID:Js4PARtC0.net]
- 荒れる要素なくない?
メモリアドレスを保持する整数と型を組合せてあるだけだし void*はアドレス保持するだけの変数って意味じゃないの
- 922 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:35:21.76 ID:6z9b86iK0.net]
- void *p;
p++ を許すのは GCC拡張だっけか
- 923 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:37:46.52 ID:AQvHkPsD0.net]
- >>891
「正しい」とか書くと荒れる元にしかならん (初心者のうちは)…「という理解でいい」ぐらいにしとき
- 924 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:39:36.73 ID:BA+tS0rQa.net]
- >>891
NULLの件はそれ逆だろう。 実際の0番地を特別扱いにしているのではなく、「どこも指さない特殊なアドレス」を表記するために整数0を使用しているだけで、0番地が特別な訳ではないはず。まあ実際にメモリ割り当てで0番地を割り当てることはしないだろうけど。 void*も、型を指定しないポインタを表すのに使っている型の指定であり、アドレスというのはおかしい。
- 925 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:45:34.86 ID:Js4PARtC0.net]
- >>894
サイズどういう扱いなのそれ
- 926 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:48:29.67 ID:6z9b86iK0.net]
- >>897
確かポインタ演算時は1バイト (char) 扱いだったかな?
- 927 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:52:58.09 ID:Js4PARtC0.net]
- 1バイトなんか
まあそりゃそうか
- 928 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:41:25.35 ID:WbpzR08B0.net]
- void*なんていらなくね?char*でいいじゃん
構造のわからないものは「バイト列」って意識でしょ?
- 929 名前:蟻人間 mailto:sage [2019/06/14(金) 21:47:11.03 ID:Qn7Uv1x90.net]
- >>900
void *がないとmemcpyに引数を渡すとき面倒。
- 930 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:51:26.70 ID:6z9b86iK0.net]
- double * には double * だけを許し char * や strucut foo * を渡したらアカンと
要求される型を厳しくチェックしようとすると 「ポインタだったら実体の型は何でもいい」 という指示を char * に含ますわけにはいかない
- 931 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:52:14.30 ID:sIZagWQx0.net]
- 汎用ポインタがchar*型になってたらコードレビューは絶対に通さないわ
- 932 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 22:42:50.69 ID:6se/aPBa0.net]
- 汎用ポインタというかvoid型という概念そのものが嫌い。
全てを厳密にやれ。言語を作る時点でまず関数に戻り値を強制すべきだったんだ。 ポインタわからん軍の原因はvoid型とかいう曖昧なせいなの
- 933 名前:ェあるせいなのも一理あろうて。 []
- [ここ壊れてます]
- 934 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 23:06:06.10 ID:sIZagWQx0.net]
- >>904
関数型言語に行ってらっしゃい
- 935 名前:デフォルトの名無しさん [2019/06/15(土) 00:02:16.99 ID:n7CfuAo60.net]
- Kotlin もよろしく
- 936 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 01:25:34.80 ID:RN+u9pJY0.net]
- windowsにおいて
setLocale(LC_ALL, "en_US.UTF-8"); が成功する環境と失敗する環境があるのですが何が原因かわかりません。。何かご存じの方いらっしゃらないでしょうか?
- 937 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 09:25:25.61 ID:oZ4xCIwS0.net]
- >>904
お前の好き嫌いなんてどうでもいいし、よくわからん時点ならvoid*なんて無視しとけばいいだけ この手の人は何故か全部を一気に理解しようとするけど今どきの言語仕様でそれやったら終わらんよ
- 938 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 09:37:31.78 ID:pAE5sudp0.net]
- 「俺の考える最強に分かりやすいポインタの説明」
・・・無理
- 939 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:05:45.19 ID:QD7Sd0bs0.net]
- >>907
OSは?両方ともWindows10?
- 940 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:23:13.60 ID:T0BSudQv0.net]
- >>908 void君だろ
C言語なら俺に聞け 148 https://mevius.5ch.net/test/read.cgi/tech/1537347410/37 37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0 >>36 マジでIDE使え。 そして貼るときはlanguageをCにしとけ。シンタックスハイライトが変わるから。 で、どれが分からんの? > enter > find > delete > show_all > delete_all mainはこの際分からなくていい。 最初に理解しないといけないのは show_all だ。 ただし細かいことを言ってもキリがないが、 > void show_all(void) なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。 普通は void show_all(tag_address* ta) だよ。 そうじゃないと複数のリストがあったときに使い物にならないだろ。 マジな話、このソースのレベルの本なら捨てた方がいい。 俺は大学の教材がいいと思うぞ。 (読んでないが)リストならググったら東工大とか出てきた。 www.is.titech.ac.jp/compview/clang/chap11.html
- 941 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:55:35.29 ID:hahimQeS0.net]
- 懐かしいな、void君
- 942 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 13:59:23.10 ID:RN+u9pJY0.net]
- >>910
コメントありがとうございます。 8と10で成功する端末があることを確認しています。失敗する端末は今のところ10だけです。 そして SetConsoleOutputCP(65001); を使用することで失敗する端末でもUTF-8をコンソールに表示でき、一応目的は達成できました。 調べてみると、結局のところwindowsではsetlocaleで2バイト以上文字は設定できないとのことだったのですが、ではなぜ成功する端末があるのか……
- 943 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 15:49:06.56 ID:fUxHfD4R0.net]
- 謎だな
- 944 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 16:57:06.86 ID:RWV4c9qt0.net]
- 引数voidって古いシステムの保守でたまに見るな
- 945 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 16:59:05.33 ID:5ne/m9/q0.net]
- と、古いシステムの保守なんかやったことねえやつがぬかすか
- 946 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:17:17.87 ID:ulIUfSMj0.net]
- 引数voidは今でも普通に使うけどな
- 947 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:22:29.22 ID:5ne/m9/q0.net]
- void show_all(); なんて書くやつ見かけたらなるべく距離を置く
- 948 名前: mailto:sage [2019/06/15(土) 18:40:21.75 ID:8bW7ANPO0.net]
- >>918
C++ ではそれは当たり前ですが…
- 949 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:42:04.96 ID:fAAVk5UIM.net]
- >>918の場合
C++なら問題ない C言語だとちょっと不味い
- 950 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:46:57.27 ID:5ne/m9/q0.net]
- おまえからも距離を置きたいぜ
ここをどこだと思っている C++なら無問題などと言わねばわからぬ者がいるとでも思っているのか
- 951 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 22:30:32.42 ID:BY4KYcRQ0.net]
- とりあえず、シングルステートでも返り値をboolにする俺がやってきましたよ。
- 952 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 02:14:21.54 ID:wRD2pOBha.net]
- ケースバイケースで使い分ける
- 953 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 08:10:06.75 ID:ORkp7ynDM.net]
- >>921
>>918の意図が分かってない者がいるぞ さあどうする?
- 954 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 10:35:26.32 ID:jvyHVZd00.net]
- >>924
世も末だな 困ったもんだ
- 955 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 11:22:43.26 ID:RqGVrKm70.net]
- 大丈夫だよ
ここを見ながらシステム作っている奴はいないから
- 956 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:20:19.90 ID:X7GbKeYn0.net]
- Cはvoid省略すると可変長引数扱いになるんじゃなかったっけ?
C++は省略してもvoidだけど
- 957 名前: mailto:sage [2019/06/16(日) 13:35:27.88 ID:gDHKfsB60.net]
- >>927
無指定でどうこう、というのは確か C89 までの話だったかと C99 では C++ と同じく省略しても void と記憶しています
- 958 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:51:25.10 ID:Mp4zqsM90.net]
- >>928
破壊的変更が行われた仕様が回避できるなら回避すべきだな
- 959 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:58:56.49 ID:VBKycPxl0.net]
- >>928
記憶違いでしょ。変わってないよ。違うと言うなら出典確認してから来てね。 kikakurui.com/x3/X3010-2003-01.html#93 > ...関数定義の一部でない関数宣言子の識別子並びが > 空の場合,仮引数の個数及び型の情報がないことを指定する。
- 960 名前:デフォルトの名無しさん [2019/06/16(日) 15:14:33.98 ID:+bML8jLFa.net]
- >>915
新しく作るプログラムでも引数なしならvoidにするよ。 まあこの頃Cで作ることそのものが減ったけどな。
- 961 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 15:41:14.25 ID:rIa5AgZza.net]
- 入力がない関数ってのは関数ではないな
- 962 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 15:51:28.54 ID:eI7bdJXk0.net]
- >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
こんな汚物が上から目線で何かもの言ってるかと思うと反吐が出る さっさと消えてほしい
- 963 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 16:33:52.45 ID:wZzXbGgB0.net]
- >>932
なぜ入力がないと思ったんだ?
- 964 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 16:48:40.62 ID:xMbXVdd30.net]
- DCL20-C. 引数を受け付けない関数の場合も必ず void を指定する
ttps://www.jpcert.or.jp/sc-rules/c-dcl20-c.html を見ると(かなり読み解きにくいんだけど)… プロトタイプ宣言では int func(void); ... 引数0個 int func(); ... 関数呼び出しでの引数の整合をチェックしない 関数定義では int func(void) {...} ... 引数0個 int func() {...} ... 引数0個 って具合に func() の解釈が一貫していない、 だから引数0個の関数は同じ形になるようにvoidをつけましょう、 という話に思える。 この辺が議論の混乱を生んでるんじゃないかな。 ついでに関数定義の int func() {...} の形式は廃止予定とも出てる。 プロトタイプの方は廃止予定ではない、ってことかな。
- 965 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 17:08:16.47 ID:jvyHVZd00.net]
- そこでjpcertを持ち出すのは興醒めだ
どっかの馬の骨が「こうすべき」と主張してるってだけな話は 現実のマシンの動きとそれ束縛しているiso/iec9899でどうなのかという話とは論点が違う
- 966 名前:935 mailto:sage [2019/06/16(日) 17:32:48.77 ID:xMbXVdd30.net]
- >>936
JPCERTを引用したのは「プロトタイプ宣言と関数定義とで 引数
- 967 名前:部が空の関数 func() の引数の解釈が違う」って話を
根拠つきで引き出すためでな。 >>927-930 あたりの流れを受けて。 規格の文章が並べて載ってるので都合が良いのだ(読みにくいけど)。 実際のところ、JPCERTのルールっていうか提案には 俺も全面的に賛成してるわけじゃない。むしろ強く反発する部分もあったり。 [] - [ここ壊れてます]
- 968 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 19:00:02.87 ID:jvyHVZd00.net]
- 必要ねえじゃん
iso/iec9899の条文を引用して その箇所がどのように解釈できると 自分の言葉で言えばいいのを 虎の威を借る形でサボる怠慢を 読まされる側は付き合ってらんねー
- 969 名前:デフォルトの名無しさん [2019/06/16(日) 19:52:17.11 ID:5fyh92Dva.net]
- >>932
そうだね。関数ではないね。しかしCだと処理をまとめる方法が関数しかないから仕方がないね。
- 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 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|