C++相談室 part131 at TECH
[2ch|▼Menu]
[前50を表示]
100:デフォルトの名無しさん
17/08/13 11:33:24.03 P6N6OiXF0.net
CSVファイルを読み込むときに#include使うことある

101:デフォルトの名無しさん
17/08/13 20:57:49.74 R0DVX6mKM.net
てか、学ぶなら1冊くらい本買えよ
Googleで独学とか効率悪すぎる

102:はちみつ餃子
17/08/14 00:14:24.38 N3oVMbyu0.net
軸がわからないと自分が何をわかってないかすらわからないからクソみてぇな思い込みで検索して見当違いの方向に突っ込んでしまうから、
そうなってから質問しても質問が見当違いすぎて回答しようがないことはよくある。

103:デフォルトの名無しさん
17/08/15 18:55:44.72 Q70B1fQS0.net
>>102
いっちょコンパイラを書いてやろうと思っているんだが何をやっていいかわからない…
手元の教科書は必死に正規表現やらチューリングマシンやらを追求している…
これってコンパイラ本だと思って買ったのだが、どうも本を間違えてしまったらしい
軸がわからないと悲惨ですね

104:デフォルトの名無しさん
17/08/15 19:28:20.65 GzAS59pw0.net
>>103
スゲー古い本だけどこの辺りを参考にするとか
URLリンク(www.amazon.co.jp)

105:デフォルトの名無しさん
17/08/15 19:38:22.48 AjDM7F7/0.net
URLリンク(ideone.com)
これ、C++17でできるようになるんだっけ?どうだっけ?

106:デフォルトの名無しさん
17/08/15 19:51:33.69 nijih07Br.net
少なくとも似たケースを支援する機能は追加されるがそのままでは通らない
[*this]

107:デフォルトの名無しさん
17/08/15 19:53:35.30 nijih07Br.net
と思ってよく読んだら関係無かったしTは生存期間内だった
つまりC++17では無理

108:デフォルトの名無しさん
17/08/15 19:56:48.90 AjDM7F7/0.net
そうなんだ。ありがとう。
またウインドウを出せないのか。
綺麗なウインドウクラスを書く日は遠い・・・。

109:デフォルトの名無しさん
17/08/15 19:59:11.57 vSz72Ekj0.net
>>103
LLVMのtutorialでもやってみたら? (↓の一番上)
URLリンク(llvm.org)
たしか日本語訳もあったと思うけど、内容が古いので注意。

110:デフォルトの名無しさん
17/08/15 20:03:18.47 BftRsONU0.net
>>103
yacc, lex (または bison, flex) とかは知ってる?
使うと構文解析が楽になるよ。

111:デフォルトの名無しさん
17/08/15 21:06:58.79 K8T9Hr6g0.net
>>108
単にstd::function使えって話じゃねーの?

112:デフォルトの名無しさん
17/08/15 21:16:01.46 AjDM7F7/0.net
>>111
WindowsのウィンドウをWin32APIで出すときは、Cのインターフェースに渡さないといけない。
なので、デフォルトキャプチャにthisのアドレスコピーが入ってくれないと厳しい。

113:デフォルトの名無しさん
17/08/15 21:38:42.75 K8T9Hr6g0.net
>>112
typedef bool(*Fun)();
にキャプチャしたデータを置いとく場所が無いんだからいつまでまっても実現しないよ
そういうC言語のAPIにはvoid*でユーザーデータ渡せて引数で取得できるようになってるはずなんだからそれに規則性があるのなら(例えば最初の引数がユーザーデータになってるとか)テンプレートでラッパー書くの簡単でしょ

114:デフォルトの名無しさん
17/08/15 21:53:17.41 +1mFvI7w0.net
>>105
できるも何も型が違うからエラーでしょ。
ラムダ型のオブジェクトはautoでしか受けられない。

115:デフォルトの名無しさん
17/08/15 23:43:23.71 AjDM7F7/0.net
>>113
クロージャって知らない?
>>114
条件を限定することで関数ポインタに束縛できるようになりました。
まぁ今回書いたのは願望ですけど。

116:デフォルトの名無しさん
17/08/15 23:55:50.09 K8T9Hr6g0.net
>>115
キャプチャしないラムダ式は関数ポインタに変換出来るだけ。束縛じゃない。

117:デフォルトの名無しさん
17/08/15 23:58:52.92 AjDM7F7/0.net
あぁ、語弊があったね。ゴメン。

118:デフォルトの名無しさん
17/08/16 06:02:38.98 1FqF77kw0.net
クロージャがどのように実装されているか調べてみることを勧める。
そしてそれをC言語の関数ポインタと互換性がある形で実装可能か考えてみるといい。

119:デフォルトの名無しさん
17/08/16 06:31:25.68 3XX715Yb0.net
>>117だよ。
駄々っ子みたいになってるが、
スレッドローカルみたいな変数を持たせれば持てないことも無いと思う。
まぁ、もうできないことはわかったので抜けます。

120:デフォルトの名無しさん
17/08/16 12:58:58.53 +9oABFYpM.net
もういない宣言出てるけど、スレッドローカルでやられても困るだけだと思う。

121:デフォルトの名無しさん
17/08/16 14:20:28.94 5HjXxUQN0.net
>そしてそれをC言語の関数ポインタと互換性がある形で実装可能か考えてみるといい。
もともとC言語はλ式とか、(束縛変数がクラスのこともありえるが)クラスを構文でサポートしていないのだから
「C言語の関数ポインタと互換性がある形」と逝っただけでは何を指しているのか不明確にならざるおえない
呼び出し側がいかに煩雑な記述になろうとも、動けば互換性があるという立場をとってみるテスト、
束縛変数も毎回引数渡しすればC言語の関数ポインタと互換にできるのでは…
もはやクロージャでも何でも無いが一応動く

122:デフォルトの名無しさん
17/08/16 14:36:46.12 53LlWcImr.net
>>121
>もはやクロージャでも何でも無いが一応動く
ちなみにどうでもいいことだがラムダ式から取得した関数ポインターはC++リンケージ型なのでC関数に渡してコンパイルが通る保証が無い

123:デフォルトの名無しさん
17/08/16 15:18:13.19 5HjXxUQN0.net
>>122 関数ポインタ経由の関数呼び出しに関数名のマングルは関係無いのでは…



125:デフォルトの名無しさん
17/08/16 15:34:56.89 53LlWcImr.net
>>123
関数名だけではない
extern "C" using CF = void(); と
using CPPF = void(); は似て非なる関数型
この二つはオーバーロード可能で互換性も無い
恐らくマングリのみならず関数呼び出し規約の違いを許容する思想
ただこれを正しく実装したコンパイラーを見たことは無い

126:デフォルトの名無しさん
17/08/16 15:57:26.34 07vifjzr0.net
「正しく実装」すると互換性がないってこと?

127:デフォルトの名無しさん
17/08/16 15:59:31.27 CMzvSoma0.net
a = 0
2.times do
b = 1
3.times do
p a, b
end
end
「Rubyのしくみ」に書いてあるけど、Rubyは、Cで作ってあり、
do 〜 end のブロックは、クロージャの実装。
ラムダ・Proc も、ほとんど同じ
子のブロック内で、変数が見つからなければ、
外のスコープ(先祖の方向)へ遡って、探しに行く

128:デフォルトの名無しさん
17/08/16 16:07:27.94 53LlWcImr.net
>>125
そのとおり
規格では別の型と規定されている
atexitなど関数ポインターを渡す関数ではCリンケージの関数ポインターを渡すかC++リンケージの関数ポインターを渡すかで
C版atexitとC++版atexitのオーバーロード呼び分けができることになっている
clang/G++は意図的に規格に従っていないというのが痛説
Visual C++は規格より自分が正しいという意味不明な見解

129:デフォルトの名無しさん
17/08/16 16:16:58.46 07vifjzr0.net
や、互換性がない→別の型 は真でも 別の型→互換性がない はそうじゃないような。

130:デフォルトの名無しさん
17/08/16 16:31:53.97 53LlWcImr.net
そのとおりだ
暗黙の変換は禁止されていない
ただ暗黙の変換が可能というルールも存在しないので「コンパイルが通る保証が無い」と書いた

131:デフォルトの名無しさん
17/08/16 16:48:50.64 07vifjzr0.net
なるほど。
上の方で原理的に無理みたいなことが書いてあった気がしたので念のため。

132:デフォルトの名無しさん
17/08/16 18:09:49.22 VpF+jov/0.net
マングリングっていやらしいよな

133:デフォルトの名無しさん
17/08/16 18:35:35.31 lmNMFTOO0.net
そういうCのインタフェースにはたいてい関数ポインタの他にユーザデータを指定できるようになっててそこにthisなんかを入れておくものだが、 >>105 は関数オブジェクトを関数ポインタだけに変換したいと言っているわけか……
コードを動的に生成すれば不可能ではないだろうけど、色々トレードオフがあるから言語の機能にするのはどうだろうね。
ライブラリを作っても良いんだろうけど、おとなしく定石に従っておいた方が良いよ

134:デフォルトの名無しさん
17/08/16 22:53:19.96 VOMe5hsv0.net
>>132
動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。だったらコード生成してもしなくても同じ事。

135:デフォルトの名無しさん
17/08/16 23:14:18.00 lmNMFTOO0.net
>>133
> 動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。
そうだね。
> だったらコード生成してもしなくても同じ事。
同じではないね。

136:デフォルトの名無しさん
17/08/16 23:47:46.20 VOMe5hsv0.net
>>134
言い方が悪かったかな?
「どこにその生成したコードを置くのか、それをどうやって解放するのか」が解決するのであれば、コードを動的に生成しなくてもキャプチャしたデータ自体をそこに置けばいいだけ。

137:デフォルトの名無しさん
17/08/17 02:40:17.43 PxJqlDv90.net
>>135
キャプチャしたデータ(またはそれへのポインタ)をコード以外のどこかに置くとして、それは関数ポインタ一つ(コードへのポインタをとるCのAPIにそのまま渡せる形)にはならないだろ。
何の話をしてるんだ?

138:デフォルトの名無しさん
17/08/17 05:10:47.78 gXVZW44o0.net
WTL/ATLでそれっぽいことをやってるね。
URLリンク(hp.vector.co.jp)

139:デフォルトの名無しさん
17/08/17 08:39:28.71 rYxoi1+/d.net
MS は mfc の頃から動的コード生成でやってだ記憶がある。
this をロードして jmp みたいな小さいコードを生成して Window Proc として使う。

140:デフォルトの名無しさん
17/08/17 09:01:01.55 6E9r52D/0.net
それ動的生成だろ。コードじゃなくてインスタンス。

141:デフォルトの名無しさん
17/08/17 10:51:29.58 rYxoi1+/d.net
>>139
コードだっつーの
関数ポインタ一つしか渡せないwindowprocにthisを渡すためにそうやってるんだよ。
なんで知らんのに反論するかなー

142:デフォルトの名無しさん
17/08/17 11:04:19.66 OslnP8rdM.net
>>140
ひょっとして各インスタンスにコードが含まれてるとか思ってる? w

143:デフォルトの名無しさん
17/08/17 14:38:16.10 B8c7/K0xr.net
>>138
そのサンクらしきものはどこのセグメントに置くの?

144:デフォルトの名無しさん
17/08/17 15:30:51.11 PxJqlDv90.net
自分でソース読めば良いのに。
最近はDEPとかあるから工夫が必要そうだよね、と検索したらこんなのが出てきた。
URLリンク(support.microsoft.com)

145:デフォルトの名無しさん
17/08/17 16:53:07.66 6E9r52D/0.net
>>143
MFCのどのクラスに動的コード生成の実装が書いてんの?

146:デフォルトの名無しさん
17/08/17 17:43:39.99 PxJqlDv90.net
なんか頭悪そうなのがつっかかってきた

147:デフォルトの名無しさん
17/08/17 17:47:21.07 fzzVUP+8d.net
DOS時代は動的コード生成とか良く使ったな

148:デフォルトの名無しさん
17/08/17 18:37:40.30 6E9r52D/0.net
>>145
なんで急にキレるんですか?
あなたがソース読めとアドバイスしたからMFCのどのソースか聞いただけなのに。

149:デフォルトの名無しさん
17/08/17 18:53:03.48 p6ewHhXhd.net
理解しようという気持ちも理解する力もないのに質問すんなよ…
mfc ではやってたっけ?やってないんじゃないの?
というツッコミならともかく、
>>141>>142なんて思考力が虫以下だろ…どこのセグメントとかアホか
Win32 は古来よりフラットなリニアアドレスモデルだろ。
VirtualAlloc も知らなそうだし。

150:デフォルトの名無しさん
17/08/17 18:56:13.88 wL10pSGX0.net
質問だと思ってる時点で低能確定やん w
まあセグメントと聞いてセグメントレジスタしか頭に思い浮かばない


151:低能はROMってろ



152:デフォルトの名無しさん
17/08/17 19:26:52.61 KC+pdSEir.net
>古来よりフラットなリニアアドレスモデル
まさかそっちのセグメントに反応するとは予想外だった

153:デフォルトの名無しさん
17/08/17 19:47:30.76 6E9r52D/0.net
>>148
だいたいあなたがMFCの頃から動的コード生成でやってたって言い出したんですよ。
だから私はMFCにあるのはインスタンスの動的生成だという指摘をしたんですよ。
そしたら、再度あなたがATLのような実装があるんだと言ったんですよ。
ソース見ろとか言う人までいるから、どのソースか聞いたらキレて、なんで言い出したおまえまでキレんだよ。アル中か?
ここは相談室だぞ。

154:デフォルトの名無しさん
17/08/18 07:51:05.48 mSCO2cNh0.net
C++を身に着けたいと思いつつも、自分でC++で何かを作るモチベーションが湧かなくって、数千行程度のC++プログラムの写経でもしようかと思ってるのですがおすすめありませんか?
SDLを使ったゲームとか興味を持ちやすくて写経しやすいかと思ってgithubとか漁ってるのですがなかなかいいのが見つからなくて悩み中です
QtみたいなC++を拡張してるのは勘弁です

155:デフォルトの名無しさん
17/08/18 08:26:03.23 cQGhZEXD0.net
あなたが何に興味を持つかなんてわかりません
C++以外の技能は?

156:デフォルトの名無しさん
17/08/18 09:19:25.85 q7vLALqK0.net
てんそるふろーでも読んでみるとか。
今を時めくフレームワークだよ。

157:デフォルトの名無しさん
17/08/18 12:28:43.04 vqpgoPDk0.net
クソだと思うやつを俺が叩き直してやるってやっていればそのうち上達してる

158:デフォルトの名無しさん
17/08/19 00:15:55.63 LWJoSxYpr.net
ぜひ叩き直してください!

159:デフォルトの名無しさん
17/08/19 10:13:11.47 2Vqw9aXW0.net
>>156
思いっきり叩いてやるからまず自分が書いたソースをどこかにアップしろ

160:デフォルトの名無しさん
17/08/19 11:23:26.49 w9JmRxmV0.net
>>157
スレリンク(tech板:20番)

161:デフォルトの名無しさん
17/08/19 12:05:03.25 uvlmBKsV0.net
他人に使わせる気のないコードなんていくら書いても意味ない
ソフトウェアとして公開して叩かれろ

162:デフォルトの名無しさん
17/08/19 12:07:34.16 w9JmRxmV0.net
>>159
>他人に使わせる気のないコード
どうすれば他人に使わせる気満々のコードになるのでしょうか?
ソースを公開する以外に何かしないといけないのでしょうか?

163:デフォルトの名無しさん
17/08/19 12:13:16.84 YuM2o2hA0.net
3行以内で書く、とか?

164:デフォルトの名無しさん
17/08/19 12:46:02.69 dHC0uy3l0.net
使いたくなるか否か、それを判定するソースコードを見せてくれれば一番早い
そしてそのソフトウェア自体をその判定にかけると得点はMAXになるのは当然

165:デフォルトの名無しさん
17/08/19 15:54:33.73 /pRbJcl80.net
>>160
・OSSライセンスを適用する
・有名処のOSSホスティングサービスで公開する
・ソフトウェアの目的と利用方法を理解しやすいようにドキュメント化する
・CPUやメモリなどのリソースを効率よく使用する
・汎用性が考慮された作りにする
・特殊化も考慮された作りにする
・バクが無いようにする
・こまめに更新し継続して改善されている事をアピールする
このくらいやれば他人に使わせる気満々のコードに見える

166:デフォルトの名無しさん
17/08/19 16:03:12.53 w9JmRxmV0.net
>>163
なるほど
でも >>158 をやる気満々で公開しようと思ってもアピール点が見つからないんです
「C++ だけで簡潔する多桁演算」というのは訴求ポイントとしてはどうなんでしょうか
誰かやってるかどうかはさておき、魅力的がどうかは気になります

167:デフォルトの名無しさん
17/08/19 16:04:19.60 w9JmRxmV0.net
×簡潔○完結

168:デフォルトの名無しさん
17/08/19 18:29:45.94 xqVOePdU0.net
右辺値参照がやっぱりわからん
template<class T>
void test(T&& t) {
f(std::forward<T>(t))
}
このstd::forward<T>(t)は左辺値なの?
名前持つt(左辺値)を転送してるから左辺値でいい?
f()はf(T&)を呼ぶであってる?

169:デフォルトの名無しさん
17/08/19 18:30:36.24 eKyb4lix0.net
C++11,14を勉強するのにいい本おしぇーてください。

170:デフォルトの名無しさん
17/08/19 19:12:00.26 o+HPRhwX0.net
effectiveなんちゃらフォイ

171:デフォルトの名無しさん
17/08/19 19:19:27.18 eKyb4lix0.net
もだーん?

172:デフォルトの名無しさん
17/08/19 19:52:37.70 g5B0Pqab0.net
>>166
forward<T>(t)はtをTの右辺値参照にキャストして返すんだから
f()はT&& tを受け取る(f(T&&)が呼ばれる)んじゃね?

173:デフォルトの名無しさん
17/08/19 20:21:54.83 3jYO+FxO0.net
>>166
それはforwarding referenceという機能を使ったperfect forwardingというテクニックで
右辺値参照を理解した先にあるものだ
右辺値参照の勉強中なら今は気にせず忘れておくもので
右辺値参照を理解してるなら右辺値参照とは別物として新たに勉強しなくてはならないものだ

174:166
17/08/19 20:37:29.73 xqVOePdU0.net
>>170
やっぱり右辺値参照へのキャストか
左辺値参照ぽい動きなんで質問してみた。ありがと
>>171
俺にはforwardはまだ早いってことスね
まずforwardなしでもう少し考えてみるわ

175:デフォルトの名無しさん
17/08/19 22:34:08.72 s/7RraD70.net
>>166
もとの test という関数が右辺値、左辺値どっちでも引数に取れる、そして std::forward でそのまま転送している
f がとる引数の型は test がとった引数と同じ。
つまり答えは実引数次第だ。

176:デフォルトの名無しさん
17/08/20 08:37:02.88 5zFtpOhv0.net
うにふぁいどこーるしんたっくすはしんだなぜだ!

177:デフォルトの名無しさん
17/08/20 08:45:14.41 0H5//osor.net
死んだ?
むしろ他の提案が出ておちつきそうだったのに
自尊心を傷つけられたと感じたハゲがゴネだして蒸し返えされたような

178:デフォルトの名無しさん
17/08/20 08:47:52.43 5zFtpOhv0.net
>>175
あんた詳しそうだな。今どうなってるの??
猛烈にほしいんだけど、サクッと入らんかな?
詳しいリンクとかあったらいただけないでしょうか。

179:デフォルトの名無しさん
17/08/20 12:02:18.26 0H5//osor.net
>>176
すまんが別の提案と間違えた。忘れて
open-std.orgのWG21のpapersの2016のP0251R0が最新ではないだろうか
何の動きもなくC++20ドラフトN4687にも入っていない

180:デフォルトの名無しさん
17/08/20 13:06:57.93 FiktH31Q0.net
3年毎に膨らんでいく仕様とか嫌だな
そらリナスさんもブチキレますわw

181:デフォルトの名無しさん
17/08/20 14:55:44.31 5zFtpOhv0.net
>>177
あぁ、情報ありがとう。やっぱ死んだままか。
手間かけさせてゴメンね。
やっぱコンセプト無いとコードサジェスト爆発するから気に入らないんだろうなぁ。。。

182:デフォルトの名無しさん
17/08/20 14:59:30.48 sGdhnhOm0.net
トーバル君は単に自分のニーズに最適な言語はCと言っているだけで
他の言語がどうなろうと知ったこっちゃないでしょ
それを周りのアフォどもが色々押しつけに来ることに時折ブチキレるだけで

183:デフォルトの名無しさん
17/08/20 15:24:25.28 4v9fraNU0.net
スキルの差によって読める、読めないの差がありすぎてもはや言語としての体をなしていない。
コンパイラによってもコンパイルできる、できないの差も激しい。大きなプロジェクトを管理する側はキレて当然。
癌のように誰も望んでない仕様拡張が続けられている。

184:デフォルトの名無しさん
17/08/20 15:43:51.01 Np+yxjmfM.net
メイヤーズがこっそりc++とバイナリ互換の新言語を開発している…と信じたい

185:デフォルトの名無しさん
17/08/20 15:57:28.37 uPeoc0+j0.net
そのバイナリ互換ってなに?
C++11 以降で、役に立つ仕様とどーでもいい仕様とをわけるとすれば、何?

186:デフォルトの名無しさん
17/08/20 16:05:02.55 sGdhnhOm0.net
>>181
誰も望んでいない仕様拡張?
autoは? range-based-forは? R"リテラルは?
initializer_listは? ラムダ式は? template parameter packは?
<random>は? shared_ptrは? <regex>は? <system_error>は?

187:デフォルトの名無しさん
17/08/20 16:10:46.08 H9uxxda60.net
>>181
ふつう、どの規格を使うかとか、場合によってはどの開発環境のどのバージョンを使うかまで
プロジェクトで規定するものだろう。
決めたことと違うコードを混ぜようとするメンバーがいたりしたらキレてもいいが。

188:はちみつ餃子
17/08/20 16:14:30.65 ikEvsZIR0.net
少なくとも個別の提案はプログラムが読みやすくなるし楽になる方向なんよね。
だからまぁ、 >>181 の言い分にある「誰も望んでない」という言説には違和感があるな。
嫌だという人がいるのはわからんでもないが、
勝手にユーザ全体の意見を代表してしまうやつは単にクズなので、
誰も耳をかさないよ。

189:デフォルトの名無しさん
17/08/20 16:17:20.06 uPeoc0+j0.net
>>154
TFか‥ソニーからも何か出たようだね

190:デフォルトの名無しさん
17/08/20 16:41:18.86 gPEOCHBy0.net
>>181
> スキルの差によって読める、読めないの差がありすぎてもはや言語としての体をなしていない。
日本語(自然言語)でも同じだろ。
馬鹿と天才でおなじ結果(コード)にしかならない、という方が問題だ。
それが天才側に揃っていれば理想的だが、実際は馬鹿側に揃うわけだし。
>>186
> 少なくとも個別の提案はプログラムが読みやすくなるし楽になる方向なんよね。
これは同意だが、問題は一部が本質的なところ(骨組み)まで変えられる程な点だろ。
現実的には>>185のようにプロジェクトリーダーが何を使うか厳密に決めればいい話で、
Linuxの場合はCだ、って言うんだから他の奴が布教しなければ丸く収まる話だ。
とはいえ通常製品の場合は「何でも出来る=何にも使えない」ではあるのだが、
C++の場合は半製品(製品を作る道具)ではあるし、
実際、機能はあった方が便利だったりするので、(使う側がどこまで使うか決めればいいだけ)
プロジェクトリーダーがしっかりしていれば、現在の貪欲な拡張方向も悪くない。
「全部の機能を使わないといけない」と信じている馬鹿と初心者は混乱するだろうけどね。

191:デフォルトの名無しさん
17/08/20 16:58:27.04 zvlsjK6m0.net
>>188
>「全部の機能を使わないといけない」と信じている馬鹿と初心者は混乱するだろうけどね。
残念ながらこういう人たちは少数派ではないのだよ。。

192:デフォルトの名無しさん
17/08/20 18:05:26.65 sGdhnhOm0.net
>>188
馬鹿側に揃えるポリシーを見事なまでにやってのけた言語と言えば。。。
IDENTIFICATION DIVISION.
再帰できない、ダミーセクションできない、動的記憶ない、オラこんな村いやだ♪
で、その結果なにが起きたか。。。
エロパブの嬢がどこかで見覚えのある顔だと思ったら、うわあ(kwskはガン無視します)

193:デフォルトの名無しさん
17/08/20 18:47:40.43 gPEOCHBy0.net
>>190
COBOLの事か?だとするとあれは試行錯誤の結果だ。非難されるべき物でもない。
そもそもあの時代の言語は再帰出来ないのも多かった。Fortran77もBASICもそうだろ。
俺が思うに、第


194:一世代言語(C以前)は「プログラミングとはこうあるべき」、 つまり、プログラミング自体を規定しようとしている。 COBOL:自然言語の仕様書がそのままソースになるべき C:所詮アセンブラ smalltalk:オブジェクト間のメッセージングこそが真の未来 Lisp:ラムダこそ真理 BASIC:馬鹿でも使えることが重要 Fortran:所詮計算機だろ で、C以外が全部糞だったのでCで統一された。 当然第二世代言語はCの後継で、C++/Java/C#のような面子になる。 とはいえ、COBOLの方向性は間違いでもないよ。 ソース自体が可読性のあるドキュメントであるべき、ってのは今でも理想だろ。



195:デフォルトの名無しさん
17/08/20 19:00:58.06 sGdhnhOm0.net
>>191
BASICは再帰できたぞ
FORTRANを実装できないマシン用に作られた縮小版で、
でもFORTRANより新しく作られた分、改良が図られていた
そのうちの、すべての行に行番号というのが賛否両論だった
当時初心者だった俺にとってはあれがラベルの概念の入り口になってくれたが
1桁KBのパーコンで構造化などという寝ぼけた老害たちがGOTOがどうたら言ってた
あ、嫁が呼んでるw じゃあな

196:デフォルトの名無しさん
17/08/20 19:05:55.32 QoZjiUMw0.net
>>192
BASIC で再帰ができるのは,ハドソン系ベーシック等,マイクロソフト以外の BASIC ではないか?

197:デフォルトの名無しさん
17/08/20 19:39:46.63 sGdhnhOm0.net
メインフレーム用の一部の言語が再帰できないのは
当時のS/370がスタックのないアーキテクチャだったからだ
逆にBASICが実装された多くのPCではCPがにスタックを持っていた
なので全変数がグローバルなのでやりにくいができるにはできた
俺もBASICでの再帰は大道芸の域を出ることがなく
実用上の手の内に入ったのはCからだった

198:デフォルトの名無しさん
17/08/20 19:45:06.60 sGdhnhOm0.net
s/CP/CPU/
CPじゃ制御プログラムだねw

199:デフォルトの名無しさん
17/08/20 21:07:10.22 gPEOCHBy0.net
>>194
> 全変数がグローバルなのでやりにくいができるにはできた
これは一般的には出来るとは言わない。
再帰が出来る=関数ローカルの変数が定義出来る、だよ。
変数共通で突っ込むのは今なら「再入」と呼ばれる物に近く、
これは言語として云々ではなく、対応する構造にするかどうかだけ。
また、CPUのスタック操作命令は高速化に寄与するだけであって、
無ければエミュレートすればいいだけだろ。
その論法だとスタック操作命令がないCPUではC言語を実装出来ないことになるが、
これはないだろ。
(S/370上のC言語実装も無いとは思えないし)

200:デフォルトの名無しさん
17/08/20 21:48:19.43 sGdhnhOm0.net
>>196
そこは俺とは見解が違うね
再帰の定義はサブルーチンの中からそのサブルーチンを呼び出すことで、
それをやりやすく補助する存在は本質じゃない
なのでスタックですら再帰の本質ではない
マシンによってはサブルーチンのネストが6層までとか限定されていて
それは何かというとリンクレジスタの個数でありスタックじゃない
再入は共通変数なんか使わないし、使ったらRENTじゃなくなる
メインフレームの流儀ではいちいちGETMAINとかね
メインフレーム上のCの実装は、俺が目撃したのはS/370じゃなく
ESA/370だったけどいちいちGETMAINはしてなかった

201:デフォルトの名無しさん
17/08/20 22:03:55.37 sGdhnhOm0.net
秀和の解析本にはBASICのくせにunwindがあるぞってなのが載ってたね

202:デフォルトの名無しさん
17/08/20 22:43:04.76 gPEOCHBy0.net
>>197
> 再帰の定義はサブルーチンの中からそのサブルーチンを呼び出すことで、
> それをやりやすく補助する存在は本質じゃない
これは屁理屈だ。
なぜならこの定義では、「再帰出来ない」言語なんて無いから。
再帰出来る/出来ない『言語』を議論している時点で、この定義は無意味で、
「普通に再帰を記述した時に問題なく動くか」が議論用の定義になる。
これは当然であり、自明だ。
つか、君は何が言いたかったんだ?
君の定義ならCOBOLだって再帰出来るだろ?

203:デフォルトの名無しさん
17/08/21 04:24:06.96 LgR8oR3f0.net
再帰アルゴリズムを繰り返し(ループ)アルゴリズムに変換することは普通のアーキテクチャー上では常に可能、
再帰回数に応じて新規のメモ化用領域を本質的に必要とするという重症なケースでも、最悪配列が使えればどうとでもなる、
>>197
メインフレームってグローバル変数として配列とか確保できなくて
いちいちGETMAINするしかないのスゲー
>>199
System/370で動くGCCの実装があったと聞いたわ(ただし今はSystem/390が動作下限とのこと)
再帰ができるかどうかはしらんwwwwwww

204:デフォルトの名無しさん
17/08/21 06:45:36.67 OHbYaZtv0.net
>>199
> 君の定義ならCOBOLだって再帰出来るだろ?
(当然だが当時のCOBOLは)できないよ
戻り番地を1つしか覚えてないのでネストしたら戻れなくなる

205:デフォルトの名無しさん
17/08/21 07:37:14.11 7Rgof7Fhr.net
そろそろよそでやれ

206:デフォルトの名無しさん
17/08/21 08:01:15.80 7Rgof7Fhr.net
C++17ドラフトのguaranteed copy-elisionが難しい
しかも規格が約50カ所修正されている
A a = A{}; と A a = f(); のムーブ無くすだけでどんだけ根本概念に手を入れてんだ

207:デフォルトの名無しさん
17/08/21 08:10:41.60 M1FJxIMj0.net
>>199
だから見解が違っているねと言ったろ
アセンブラは再帰できるのか、できないのかという問いと、
COBOLは再帰できるのか、できないのかという問いに、
同じバックボーンで答えることが俺には出来ないが
おまえさんには出来るということだろ?
>>200
bfdではi370だね

208:デフォルトの名無しさん
17/08/21 22:52:00.36 Ec7rLiDE0.net
ついに裁判か…
URLリンク(www.bengo4.com)

209:デフォルトの名無しさん
17/08/21 23:00:08.39 M1FJxIMj0.net
犯人扱いしておいて違ったら知らん顔という制度そのものが間違ってる
捜査協力した人には謝礼だろうが
にせ伝票で架空の謝礼費を着服なんかしてないで
やるべきことをやれっての!

210:デフォルトの名無しさん
17/08/21 23:01:02.71 M1FJxIMj0.net
架空の謝礼費を内部告発した仙波さん、えらい扱い受けたよね

211:デフォルトの名無しさん
17/08/21 23:09:51.41 BkgqT9qm0.net
C++の最新仕様を追い続けられる人ってのはやっぱどこかちょっと変わり者というか
ふわふわしたものが許せないというか、なんとなく動いてるからいいや的な緩さが
許せないというか、白黒はっきりつけようぜ的な性格なのかな?って思ったw

212:デフォルトの名無しさん
17/08/21 23:12:01.91 M1FJxIMj0.net
たったの千円でも知らん顔とは次元が違う
謝礼の対象でないという取り決めがあるばかりに
警察官の横柄な態度を誘発しているんだよ

213:デフォルトの名無しさん
17/08/21 23:56:14.20 pHph3yYu0.net
>>208
たかだか3年に1度の更新がそんなにしんどいのかよ
追い続けるもクソもねえ
重箱の隅をつついても1冊程度にまとめられる量しかないのに

214:デフォルトの名無しさん
17/08/21 23:59:39.85 RPf0vXrN0.net
最近は生ポインタ撲滅されそうと聞いたが
今までのメソッドとかどうしてるん
混在してるだろ

215:デフォルトの名無しさん
17/08/22 00:35:41.09 CYQ4BtpJ0.net
生ポのオレオレ定義

216:デフォルトの名無しさん
17/08/22 00:59:49.41 2UJiCQ8C0.net
プロパティーいつ実装されるのやら
getsetくっそマンドクサ

217:デフォルトの名無しさん
17/08/22 01:03:51.34 NIldwpVs0.net
>>208
ほとんどが待ってた機能だぜ?
言語仕様だけでなくライブラリまで
おまえろくすっぽC++使ってねえだろ

218:デフォルトの名無しさん
17/08/22 02:32:46.66 Z58zmq8rp.net
全くわからない
雰囲気でc++を使っている

219:デフォルトの名無しさん
17/08/22 02:42:19.05 S2ZGAu0e0.net
VSのインテリセンスさんだって
いまだについていけず
ポンコツなエラー吐きまくってるわけだし
まだまだ大丈夫!

220:デフォルトの名無しさん
17/08/22 11:30:22.61 FcKiiis6a.net
>>210
>重箱の隅をつついても1冊程度にまとめられる量しかないのに
お前は本を出したことないから「1冊程度にまとめ」るのがどれだけ大変か分からないだけ

221:デフォルトの名無しさん
17/08/22 12:26:19.96 NIldwpVs0.net
そういうおまえはあるのか?

222:デフォルトの名無しさん
17/08/22 12:33:51.83 c0Kw6L5Fd.net
雑誌の編集長ですから

223:デフォルトの名無しさん
17/08/22 12:42:39.12 NIldwpVs0.net
それが本当なら恥ずかしい見積もりミスしてんぜおまえさん

224:デフォルトの名無しさん
17/08/22 12:43:40.67 aOcQtSkRH.net
>>217
本を読む、理解する側の分量の話をしてるんだから、まとめる側の労力が大きいかどうかはどうでもいいのでは?

225:デフォルトの名無しさん
17/08/22 15:03:21.13 d7ebk59r0.net
うん。するどい。

226:デフォルトの名無しさん
17/08/22 15:14:35.21 NIldwpVs0.net
雑誌ってエロ本か何かだろどーせ
技術系の雑誌やっててあーゆーバカ言っちゃ自殺もんの恥だぜ

227:デフォルトの名無しさん
17/08/22 17:02:21.79 w4zQmMtVr.net
>重箱の隅をつついても1冊程度にまとめられる量しかないのに
その一冊程度の更新にclang/gcc/vc++すべてが追従出来ていないというのに

228:デフォルトの名無しさん
17/08/22 17:10:08.87 hmTXL6wT0.net
>>205
情熱があるんだね,うらやましい‥
ガス欠状態から脱却した

229:デフォルトの名無しさん
17/08/22 17:20:14.07 NIldwpVs0.net
あいたた、本にまとめることも、実装とテストも、
とにかく量的な感覚がどこにもないのか

230:デフォルトの名無しさん
17/08/22 20:47:37.89 0/CmF7JC0.net
>>213
なら、publicにしちゃえばいいじゃんといってみる。
関数は振る舞いを書くべきだと思うし、変数の代わりに使うものじゃないと思うんだ。
あと、オブジェクト指向的にクラス変数は基本悪である、ということも考えるべきではないだろうか。

231:デフォルトの名無しさん
17/08/22 20:56:12.81 COEJtZVq0.net
>>227
横からだけど俺もそれに同意だ
余分な抽象化は単に工数が増えるだけ
しかしなんで"貪欲"な標準化委員会はプロパティは入れないんだろな

232:デフォルトの名無しさん
17/08/22 21:04:28.96 dxaP++Hz0.net
プロパティ導入したら、なんかいいことあるの?

233:デフォルトの名無しさん
17/08/22 21:13:44.10 CYQ4BtpJ0.net
>>227
クラス変数って何?

234:デフォルトの名無しさん
17/08/22 21:18:39.19 BxNeEQM2M.net
>>229
変数そのものがバッキングフィールドにカプセル化されることで、変数へのアクセスを必ずメソッド経由にできる

235:デフォルトの名無しさん
17/08/22 21:46:13.74 dxaP++Hz0.net
>>231
バッキングフィールドってメンバ変数をprivateにすれば今でも同じことできるんじゃね?

236:デフォルトの名無しさん
17/08/22 22:05:33.19 q1PzJh5lM.net
地味に嬉しいのは既存のパブリックメンバ変数にアクセスしてるコードを変更せずに処理を追加できること

237:デフォルトの名無しさん
17/08/22 22:30:23.44 uMve0U0S0.net
>>232
privateな変数はclass内からアクセスし放題だけど、バッキングフィールドはアクセッサ経由以外では絶対に触れない

238:デフォルトの名無しさん
17/08/22 22:34:14.35 ONlIaE3KM.net
c++erは厳しくしつけられているので、既存のpublicメンバがそもそも存在しない

239:デフォルトの名無しさん
17/08/22 22:35:33.43 uMve0U0S0.net
>>235
これは正しい


240:



241:デフォルトの名無しさん
17/08/22 22:36:16.75 ONlIaE3KM.net
おっと変数が抜けた

242:デフォルトの名無しさん
17/08/22 22:58:36.57 D8nSL4rC0.net
>>233
逆にそれが入らない原因なのでは?
軽い処理(public変数)なのか重いかもしれない処理(関数呼び出し)なのか、
見た目分かるようにしろってのがC++の流儀なんだろ。
俺はあった方がいいと思うけどね。
速度チューニングでこの手のマイクロマネージメントは全く意味がないから。

243:デフォルトの名無しさん
17/08/22 22:59:26.20 UHwuUWMX0.net
publicなメンバが一つもなかったらそもそもインスタンスを構築できないのでは…

244:デフォルトの名無しさん
17/08/22 23:02:04.62 UHwuUWMX0.net
>>238
メンバ変数の公開よりもアクセサーを設けてインライン展開してもらう方がC++の思想的に望ましいのでは…

245:239
17/08/22 23:02:59.41 UHwuUWMX0.net
スマンfriendを使えば良いのか…

246:デフォルトの名無しさん
17/08/22 23:13:00.45 zLx3ukqP0.net
>軽い処理(public変数)なのか重いかもしれない処理(関数呼び出し)なのか、
>見た目分かるようにしろってのがC++の流儀なんだろ。
C++って、それを判断するのが最も困難な部類の言語だと思うが。

247:デフォルトの名無しさん
17/08/22 23:20:46.21 NIldwpVs0.net
set/get用のデータメンバをちまちま用意するという
狭い考えに限定してきやがる思考妨害アイテムは無用

248:デフォルトの名無しさん
17/08/22 23:28:17.57 D8nSL4rC0.net
>>240
それはオブジェクト指向の理想。C++はそっちを向いていない。
>>242
いや簡単な部類の言語だ。

249:デフォルトの名無しさん
17/08/22 23:37:15.06 +MsUtw+Or.net
ほう、ではこのプログラムがC++17で何回ムーブが行われるかわかるかね?
auto f() {
struct C{int m;};
return C{};
}
auto c = f();

250:デフォルトの名無しさん
17/08/22 23:37:39.41 CYQ4BtpJ0.net
はいはい属性の抽象化属性の抽象化

251:デフォルトの名無しさん
17/08/22 23:39:19.18 CYQ4BtpJ0.net
>>245
0回

252:デフォルトの名無しさん
17/08/22 23:41:09.40 +MsUtw+Or.net
残念
0回または1回
因みに確認のためにムーブコンストラクターを追加すると0回に変わる

253:デフォルトの名無しさん
17/08/22 23:49:21.67 +MsUtw+Or.net
ということで、見た目で判断することは難しいのではないかと

254:デフォルトの名無しさん
17/08/23 00:09:19.34 CuDbJhab0.net
つかお前ら他言語使ってないだろ。
逆に言えばC++はその程度の精度での見積もりが出来る、ということなんだよ。
GC言語なんてGCがどこで走るか予測不能だから、実行時間の保証なんて全く出来ないし、
JIT言語はJIT側にその最適化が入っているかどうかで全く速度が変わってしまう。
つまりJava/C#/JavaScript等はその精度での見積もりはそもそも不可能なんだよ。
それとは別に、C++はその辺の仕組みがかなり複雑になっているのは認めるが、
それでも他言語と比べたら精度高く見積もれる方だよ。
getterを使った場合の問題は、それが見積もりにくくなることと、
あまりに多用するとどこで処理しているのか分かりにくくなる点だが、
まあ、適切に使っている限りはかなり使える機能だから、有った方が便利なんだけどね。
だから普通に考えれば「貪欲」なら当然入れるべきだし、
むしろラムダより先に入れるべきだが、入れないんだから何か引っかかってんでしょ多分。

255:デフォルトの名無しさん
17/08/23 00:16:20.92 Cw77BvbJ0.net
>>248


256:はちみつ餃子
17/08/23 02:11:33.58 wuLlGfOo0.net
getter がただの変数アクセスに被せてあるだけならまともなコンパイラなら最適化で消えるから速度的なペナルティはゼロだよ。

257:デフォルトの名無しさん
17/08/23 07:57:53.52 KTb6BBkr0.net
a = 1;
こんなコード片で、aの型がプリミティブ型かconstr(int)/operator=(int)を持つクラスなのかによって
実際に実行される処理内容が違う時点で
>軽い処理(public変数)なのか重いかもしれない処理(関数呼び出し)なのか、
>見た目分かるようにしろってのがC++の流儀なんだろ。
そんなものないとわかるだろう。
それににしても、そこからGCのオーバーヘッドに話が


258:飛ぶのはさすがにアクロバティックすぎるw 実実行時間の話なら、マルチスレッドの非リアルタイムOS上のプログラムはどれも正確な見積もりなどできん。



259:デフォルトの名無しさん
17/08/23 08:29:43.04 kvkWqUxa0.net
プリミティブ型? ああJava訛りね、C++用語はISO/IEC14882:2011 3.9.1に規定あるから
a = 1; がビルトインの代入か、トリビアルのoperator=か、
ユーザー定義のoperator=か、コンストラクタを呼び出すか、
コピーかムーブか、読めない人はC++には向いてないので無理しなくていいよ
要するにアセンブラ苦手なんだろ
マルチスレッドでもタイムクリティカルとか割り込みマスクとかあるしね
別にRTOSに限ったことじゃなく

260:デフォルトの名無しさん
17/08/23 11:11:46.28 KtaXakwM0.net
>>254
オメーは何が言いてえんだw
無意味に反論するんじゃねえよ
だからアホだって言われるんだよ

261:デフォルトの名無しさん
17/08/23 12:25:37.91 kvkWqUxa0.net
C++を批判するには
おまえ足んねーものが
多すぎつってんだよ

262:デフォルトの名無しさん
17/08/23 18:58:23.34 HlA0mWJs0.net
C++ 標準委員会のドワンゴ江添は、職務質問の手荷物検査を拒否したら、
警官10人に、現場で1時間半以上、拘束されたらしい
捜査でもない、任意の行政処分なのにw
それで東京都を訴えた

263:デフォルトの名無しさん
17/08/23 19:16:52.69 Rd2CDMDCM.net
>>254
> a = 1; がビルトインの代入か、トリビアルのoperator=か、
> ユーザー定義のoperator=か、コンストラクタを呼び出すか、
> コピーかムーブか、読めない人
それがわかったからと言ってなんになるんだ?
定義が常に読めるとは限らんだろ
> 要するにアセンブラ苦手なんだろ
逆アセしてでも読めとか言ってるなら単なる老害のアホ

264:デフォルトの名無しさん
17/08/23 22:25:37.71 kvkWqUxa0.net
>>258
ほーお、おまえさんは定義が読めないと判断できないのか
普通の人は宣言まで読めれば判断できるんだがw
逆汗読まないほうがバカガキ
バカガキからみて普通の人は老害というだけ

265:はちみつ餃子
17/08/24 00:52:21.94 MQSUCcmg0.net
そうか。

266:デフォルトの名無しさん
17/08/24 07:16:54.28 uGClSq1gM.net
老害だと思ってたら基地害だったと言うオチかよ w

267:デフォルトの名無しさん
17/08/24 07:27:59.03 kJk0ElnZ0.net
熱いなプロパティ
はやく標準化されればいいのに

268:デフォルトの名無しさん
17/08/24 10:04:23.28 VdsYrxcW0.net
いらね

269:デフォルトの名無しさん
17/08/24 11:04:12.57 h3Bt5TkH0.net
プロパティじゃないと出来ないことってなになの

270:デフォルトの名無しさん
17/08/24 11:21:59.10 ItTZCijS0.net
見た目だけじゃね?

271:デフォルトの名無しさん
17/08/24 11:45:56.43 VdsYrxcW0.net
IDEがやれば済むこと
わざわざ言語に入れる必要なし!

272:デフォルトの名無しさん
17/08/24 12:19:36.07 TzTK1OIfM.net
メンバ変数と関数の呼び出し統一化。
いらんというのは同意。

273:デフォルトの名無しさん
17/08/24 14:05:25.76 5zDLSTW70.net
オブジェクトの状態と操作の区別
関数でも代用できてしまうけど、変数のように扱えるってのが大きい
変数のような使い方で処理を挟める、これはPublicなメンバ変数では出来ない

274:デフォルトの名無しさん
17/08/24 14:20:51.13 VdsYrxcW0.net
できるよバーカ
C++98より前、ARM C++の時代から

275:デフォルトの名無しさん
17/08/24 17:42:35.34 hLrI3YRl0.net
たしかに、operator()とoperator=があればできそうではある

276:デフォルトの名無しさん
17/08/24 18:28:45.68 dK94ZXMf0.net
>>269
どうやって?コードよろ

277:デフォルトの名無しさん
17/08/24 18:48:22.87 hLrI3YRl0.net
ARMだとテンプレート


278:ネいから、メンバ変数にしたい型ごとにラッパークラス作らないいけないから大変そう



279:デフォルトの名無しさん
17/08/24 18:52:57.63 4nWMkj3x0.net
質問ですが
std::string str("abcdefghi"); // (*1)
str.resize(8); // (*2)
size_t len = strlen(str.c_str()); // <-- "abcdefgh\0"の長さが返る (*3)
となるのですが、(*3)の時点でできる終端NUL文字"\0"って、
いつのタイミングでどこの領域に確保されるのですか、

280:デフォルトの名無しさん
17/08/24 18:54:42.67 4nWMkj3x0.net
訂正
×:、(*3)の時点でできる
○:、(*3)の時点でできている

281:デフォルトの名無しさん
17/08/24 19:23:39.06 hLrI3YRl0.net
ARMテンプレートあったわ。失礼

282:デフォルトの名無しさん
17/08/24 20:00:39.22 kJk0ElnZ0.net
>>270
そのスマートオブジェクトをメンバ変数にした場合、一々親へのポインタをそのスマートオブジェクトに記憶してやらんといけないからすごく面倒なのだよ
プロパティはその点何の束縛もないから良いのだ

283:デフォルトの名無しさん
17/08/24 20:11:18.34 VdsYrxcW0.net
>>272
アフォwww
template と try catch それと typeid はARMで新設されたんだよ
おまえ多重継承だけだと思ってんだろ

284:デフォルトの名無しさん
17/08/24 20:14:15.85 G5OnAPYO0.net
>>273
*1の時点であるよ

285:デフォルトの名無しさん
17/08/24 20:17:27.08 LSCbdyW40.net
>>273
(*2)の時点で 'i' があった場所に置かれる、
と素朴に思ってた

286:デフォルトの名無しさん
17/08/24 20:39:47.98 oFKMCsHnd.net
🐒

287:デフォルトの名無しさん
17/08/24 21:28:30.26 YTCHjYE8M.net
>>273
(*2) の時点で新規領域に abcdefgh をコピーしてその後に \0 を置く

288:デフォルトの名無しさん
17/08/24 21:29:59.02 G5OnAPYO0.net
新規領域もコピーもないでしょ

289:デフォルトの名無しさん
17/08/24 21:33:49.00 4nWMkj3x0.net
コピーが生じないんだとしたら、
std::string::size()はいつも1バイトだけサバを読んだ値を返すってこと?

290:デフォルトの名無しさん
17/08/24 21:34:29.37 G5OnAPYO0.net
せやで

291:デフォルトの名無しさん
17/08/24 21:35:38.05 4nWMkj3x0.net
なのか

292:270
17/08/24 22:02:35.81 oFKMCsHnd.net
プロパティはこれじゃアカンの?
URLリンク(wandbox.org)

293:デフォルトの名無しさん
17/08/24 22:12:47.64 4nWMkj3x0.net
Windows Phoneの開発で使うC++/CXにはpropertyが構文でサポートされているで
ていうかpropertyがあることが存在意義な感じ?(ネイティブなC++は別にあってそれはそれで利用可能

294:デフォルトの名無しさん
17/08/24 22:15:25.24 4nWMkj3x0.net
データメンバ直アクセスでなくてpropertyにすると良いことがあるというのは
マーシャリングを裏で勝手にやって来る点

295:デフォルトの名無しさん
17/08/24 22:28:47.63 TzTK1OIfM.net
メンバ関数でいいじゃん。ということだろ。

296:デフォルトの名無しさん
17/08/24 22:34:36.32 4nWMkj3x0.net
  |
  | ('A`) .oO(名前考えるのマンドクセ
 / ̄ノ( ヘヘ ̄ ̄ ̄


297:デフォルトの名無しさん
17/08/24 22:54:26.67 TzTK1OIfM.net
0変数:getter, 1変数:setter, 尻尾付き:メンバ変数
とかは良くやるな

298:デフォルトの名無しさん
17/08/25 00:06:28.73 w8QRZZ7K0.net
>>287
それ以前のVC++/CLIからサポートされてる。
>>286
駄目。
propertyは新規機能ではなく、見た目だけの問題だから、
逆に言えば、見た目がpropertyで書いた時より分かりにくいようなら駄目なんだ。
ほぼ同じ事はラムダとファンクタでもそうだけど。

299:デフォルトの名無しさん
17/08/25 00:10:22.03 hVYhQQjP0.net
>>268
オペレーターのオーバーライドとにたような感じになると思うけど、その挟み込む処理の重さが隠蔽されてしまうという問題があって、一般には、非推奨だとおもうのだけど今はかわってきてるのかね?
たとえば、代入しているだけだとおもったら、実


300:はファイルアクセスまでしてたとかかな。



301:デフォルトの名無しさん
17/08/25 00:19:32.01 4dE2HuPo0.net
>>293
>258理論によれば、老害じゃなければ一目で処理の重さがわかるんじゃね
もっとも処理の重さに関するC++の不透明さに警戒を抱くことを老害とするならば、
カーニハンやリッチーも老害にカテゴライズされてしまうが

302:デフォルトの名無しさん
17/08/25 00:49:30.90 w8QRZZ7K0.net
>>294
K&Rというか生Cが嫌っている理由は「余計なことをするな」だ。
適切に使っている限りC++は不透明ではない。それでも彼等は嫌うだろ。
>>293
横だが結局は使い方次第だよ。C++はいくらでも読みにくいコードを書けるから。
ただ、きちんと使えば有用な機能だよ。
演算子オーバーロードについてはgoogleは「慎重にやれ」だね。
URLリンク(ttsuki.github.io)
どうでもいいが、何故演算子は「オーバーロード」なんだ?
言われてみれば「オーバーライド」の方が適切な気がする。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

462日前に更新/267 KB
担当:undef