C++相談室 part129 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ dfcf-HvS5)
2017/01/09(月) 14:49:27.56ID:p96WJVyd0!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part128
http://echo.2ch.net/test/read.cgi/tech/1480172629/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0002片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)
2017/01/09(月) 16:53:24.81ID:FJMj93WYK環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----
0003デフォルトの名無しさん (ワッチョイ 0f42-twlg)
2017/01/09(月) 16:56:41.17ID:jVBRIf3C00004デフォルトの名無しさん (ワッチョイ dfc1-f52P)
2017/01/09(月) 17:39:43.46ID:MgtRKFl000005デフォルトの名無しさん (ワッチョイ 6f13-HvS5)
2017/01/09(月) 17:40:19.60ID:s0WlKSpH00006デフォルトの名無しさん (ワッチョイ df98-S/j3)
2017/01/09(月) 20:32:19.17ID:IZbe/h670{
err << "うむ、ご苦労";
}
0007デフォルトの名無しさん (オッペケ Sr3f-KLRm)
2017/01/09(月) 20:48:55.53ID:NzCLpVsYrゴミを貼るなボケ
0008片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)
2017/01/09(月) 20:57:29.53ID:FJMj93WYK0009デフォルトの名無しさん (ワッチョイ fb04-nASw)
2017/01/09(月) 22:45:37.43ID:cNtoCjW40みたいな話がありますが、これはクラスメンバのstatic変数でも同じでしょうか。
やはり定番のローカルなstatic変数の参照を返すのがベストでしょうか?
0010デフォルトの名無しさん (ワッチョイ df8e-KLRm)
2017/01/09(月) 23:42:53.87ID:YmMsaSRh0↓
static int &get_unko() {
static int a = f();
return a;
}
問題解決になるとは到底思えない
ちなみにクラスの静的メンバーでも同じ
0011デフォルトの名無しさん (ワッチョイ 1b7b-p/5D)
2017/01/10(火) 00:09:01.54ID:qNfJPVUt0ベストは静的な寿命をもつ変数が別の静的な寿命を持つ変数を参照するような設計にしないこと
やむを得ずそうなる場合はローカルなstatic変数の参照を返す方法がベター
しかしそれも構築は初めて呼ばれた時になるが、破棄の順が不定なのは変わらずだから注意
0012デフォルトの名無しさん (ワッチョイ dfcf-IbiL)
2017/01/10(火) 00:34:11.81ID:kCG+Vhkl0破棄準は構築と逆順になるよ。 [basic.start.term]
0013デフォルトの名無しさん (ワッチョイ 1b7b-p/5D)
2017/01/10(火) 01:22:55.56ID:qNfJPVUt0ホンマやね
メモリ上の配置と関係なしに構築した順番覚えてるのな。
0014デフォルトの名無しさん (ワッチョイ 0f33-Flmg)
2017/01/10(火) 02:41:10.58ID:YALu2HFR0規格上の明記は無いよね?
もし、コード上に初期化フラグ的なものを保持して毎回判定してるのだとしたら、単純なグローバル変数よりアクセス遅くなるのかな?
0015デフォルトの名無しさん (ワッチョイ dfcf-IbiL)
2017/01/10(火) 03:28:04.72ID:kCG+Vhkl0気になるならアセンブリ出力を見ればいい。 https://godbolt.org/g/Rp3mVk
効率は実測でどうぞ。
0016デフォルトの名無しさん
2017/01/10(火) 03:42:52.33ID:N3Ngq+Oq00017デフォルトの名無しさん (ワッチョイ 0f7b-/uDL)
2017/01/10(火) 04:16:44.71ID:UGgokZQL00018デフォルトの名無しさん (ワッチョイ 5f36-GcKO)
2017/01/10(火) 07:19:19.96ID:xRFVWFBm0規格上明記は無いのではという>>14の疑問に対して>>16のレスだろうから、実装は関係ないでしょ。
0019デフォルトの名無しさん (ドコグロ MMff-JQu6)
2017/01/10(火) 08:35:32.37ID:WWXPDPHuMスコープが違うだけだろ
フラグとか意味わからん
0020デフォルトの名無しさん (ワッチョイ 0f33-Flmg)
2017/01/10(火) 09:01:12.67ID:YALu2HFR0主要な実装がどうなっているのか気になりますねー。
0021デフォルトの名無しさん (ワッチョイ 0f33-Flmg)
2017/01/10(火) 09:03:05.70ID:YALu2HFR0関数内の場合は初期化タイミングが明確にされている部分が違うよね?
0022デフォルトの名無しさん (スプッッ Sdff-5duh)
2017/01/10(火) 09:17:26.16ID:Kh8Jpf0Qdコンパイル時には順番決まらないですよね
0023デフォルトの名無しさん (ワンミングク MMff-kB5U)
2017/01/10(火) 10:17:49.42ID:KPiaZgHCM生成された順にデストラクタスタックに積んどきゃええだけやろ
0024デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
2017/01/10(火) 21:06:37.99ID:aZrJHKL80マルチスレッド下でも1度だけ初期化しなけりゃならないのでややこしいことをやってる
0025デフォルトの名無しさん (ワッチョイ 6fa6-HvS5)
2017/01/10(火) 21:27:26.24ID:A8TeocJX00026デフォルトの名無しさん (ワッチョイ ab26-S/j3)
2017/01/11(水) 09:57:17.96ID:kJf5mE6d0分からないっていう怖さは有るがな
スレッドに紐づくようなものを初期化するのはNGだ
(COMであるとかウィンドウであるとか)
もしくはプログラムの最初で明示的にメインスレッドから呼び出して初期化しておくか
スレッド間でシェアする必要がなければTLSにしておくか
0027デフォルトの名無しさん (ワッチョイ df98-S/j3)
2017/01/11(水) 11:52:08.85ID:z2RHK6s+0mutexやatomicでどうにでもできるでしょ
0028デフォルトの名無しさん (ワッチョイ ab26-S/j3)
2017/01/11(水) 12:30:02.49ID:kJf5mE6d0>mutexやatomic
でどうやって解決するのか熱く語ってもらおうか
0029デフォルトの名無しさん (ワッチョイ df98-S/j3)
2017/01/11(水) 12:37:09.06ID:z2RHK6s+00030デフォルトの名無しさん (オッペケ Sr3f-KLRm)
2017/01/11(水) 12:37:52.47ID:ZhOyh3uTr>スレッドに紐づくようなものを初期化するのはNGだ
いきなりお題改変乙
グローバルに置くんだからスレッド間で共有したい場合の話に決まってるのに
0031デフォルトの名無しさん (ワッチョイ ab26-S/j3)
2017/01/11(水) 12:53:45.95ID:kJf5mE6d0お前が
>mutexやatomic
って言ったんだろ
いっとくが排他制御の話など誰もしてないぞ
世の中には生成されたスレッドに紐づいてしまうオブジェクトというものがあって
Windowsのウィンドウであれば、生成されたスレッドのメッセージキューで
メッセージポンプを回すことになるし
COMは生成されたスレッドのアパートメントで一生を過ごす
どのスレッドで初期化されたかが重要になるオブジェクトもあるってこった
そして関数内static変数は最初に呼び出したスレッドで初期化処理が走る
この問題をお前は >mutexやatomic で解決するんだろ?
さあ、熱く語れ
>>30
スレッドに紐づくようなもの(WindowsのCOMやウィンドウ)を
関数内で定義したstatic変数で初期化するのはNG
→スレッドに紐づかないものであればOK、スレッド間で共有もできる
何がお題変更なの?
グローバル変数やシングルトンに関数内static変数は便利だけど
相性が悪いものもあるって話なのに
0032デフォルトの名無しさん (ワッチョイ df17-pn3f)
2017/01/11(水) 14:03:34.54ID:9AYGk8zp0スレッド局所記憶(英: Thread local storage, TLS)
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E5%B1%80%E6%89%80%E8%A8%98%E6%86%B6
0033デフォルトの名無しさん (オッペケ Sr3f-KLRm)
2017/01/11(水) 15:00:37.89ID:ZhOyh3uTr>何がお題変更なの?
相性が悪いものの話なんかしてねーし
スレッド間で共有したい変数の話の最中に
「スレッド間でシェアする必要がなければTLS」とか力説し始めて
アホなの?
0034デフォルトの名無しさん (ワッチョイ df98-S/j3)
2017/01/11(水) 15:51:10.26ID:z2RHK6s+00035デフォルトの名無しさん (ワッチョイ ab26-S/j3)
2017/01/11(水) 15:53:31.57ID:kJf5mE6d0>スレッド間で共有したい変数の話の最中に
それはお前が勝手に決めたことだろ
元々あくまで関数内static変数の初期化がスレッドセーフになっているというだけの話であり
本質的にロジックとして変数をスレッド間で共有する必要が有るのか無いのかまでは関係ないだろ
本質的にスレッド間で共有する必要がない場合はTLSに変更することもできる
ってだけの話で
そのほうがパフォーマンスが出る場合もある
0036デフォルトの名無しさん (オッペケ Sr3f-KLRm)
2017/01/11(水) 16:34:37.80ID:ZhOyh3uTr↓
MT保証で複雑なことしてる
↓
そのstatic、ホントに必要ですか?
↓
いきなり何を言いだすの
↓
本質的にロジックとして変数をスレッド間で共有する必要が有るのか無いのかまでは話してないからな←今ここ
0037デフォルトの名無しさん (ワッチョイ ab26-S/j3)
2017/01/11(水) 16:47:40.32ID:kJf5mE6d0スレッドローカル関数内static変数の事すら理解していないのがよく分かった
0038デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
2017/01/11(水) 17:27:25.47ID:7JGhXUMg0どのような状況で呼び出されても確実に一回だけ初期化する事が要求されている
mutexは初期化する必要があるから役に立たん
0039デフォルトの名無しさん (ワッチョイ df17-pn3f)
2017/01/11(水) 17:41:25.81ID:9AYGk8zp00040デフォルトの名無しさん (ワッチョイ df98-S/j3)
2017/01/11(水) 18:35:56.09ID:z2RHK6s+0mutexとatomic「だけで」とも言ってないのに
人の話の前提条件を勝手にでっち上げて叩く
ストローマンに辟易としちまった
0041デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
2017/01/11(水) 18:45:08.90ID:7JGhXUMg00042デフォルトの名無しさん (ワッチョイ df8e-KLRm)
2017/01/11(水) 18:48:17.00ID:wUdtm8ww0それがこのスレの醍醐味
0043デフォルトの名無しさん (ワッチョイ df8e-KLRm)
2017/01/11(水) 20:16:24.69ID:wUdtm8ww0>どうやって解決するのか熱く語ってもらおうか
どちらかというと>>26あたりからおかしくなったようだ
クスリでもやっているのか、>>28あたりは何か幻覚を見たのではないかと
0044デフォルトの名無しさん (ワッチョイ bb7b-XpjH)
2017/01/11(水) 21:00:46.12ID:7JGhXUMg0「スレッドに紐付付いてるのは共有するな」は受け入れ難い
と考えると、これをstatic変数の初期化に使うのは要注意と言う指摘は一理はあるかと
0045デフォルトの名無しさん (ワッチョイ 677b-dqLr)
2017/01/12(木) 15:07:52.74ID:8CizHZGj0ひんとstd::mutexのコンストラクタはconstexpr修飾されてる
0046デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/12(木) 15:28:40.45ID:sAPGeyQI0std::mutexってランタイムライブラリじゃ無いだろ
0047デフォルトの名無しさん (ワッチョイ 677b-dqLr)
2017/01/13(金) 00:15:44.24ID:nVxQCvXm0ちょっと何言ってるのかわからないから誰か解説者よろ
0048デフォルトの名無しさん (ワッチョイ 1f36-cG99)
2017/01/13(金) 10:28:33.20ID:VKtyxMUH0なんだ、そこからかよ
static変数の初期化の話題だってわかってる?
0049デフォルトの名無しさん (ワッチョイ b2cf-YL17)
2017/01/13(金) 10:37:18.84ID:7CvKX7vR00050デフォルトの名無しさん (ドコグロ MM0a-Hii4)
2017/01/13(金) 12:28:56.30ID:LkImdLNRM関数内のstatic変数だろ。
0051デフォルトの名無しさん (ワンミングク MMe2-dqLr)
2017/01/13(金) 12:56:57.82ID:kKg87s4oMそれとランタイムライブラリが何って?
0052デフォルトの名無しさん (ワッチョイ 3217-q48i)
2017/01/13(金) 13:13:35.85ID:y8BGYaW90という意味に、私は解釈したんだがほかの人は道南?
0054デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 17:12:37.37ID:76Aeg2JY0llvmで言うところのcompiler-rtだよ
0055デフォルトの名無しさん (ワンミングク MMe2-dqLr)
2017/01/13(金) 18:02:07.52ID:kKg87s4oMそれが?
0056デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 18:31:46.73ID:76Aeg2JY0これで何がわからない?
0058デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 18:49:34.49ID:76Aeg2JY0llvmで言うところのcompiler-rtって理解してる?
0059デフォルトの名無しさん (ワンミングク MMe2-dqLr)
2017/01/13(金) 18:55:22.83ID:kKg87s4oMうん。
それとstd::mutexのコンストラクタがconstexprだということの関連性がわからん
0060デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 19:03:56.40ID:76Aeg2JY0じゃ、static変数の初期化の排他制御にstd::mutexを使うと言うお笑い提案に付いては?
0061デフォルトの名無しさん (ワンミングク MMe2-dqLr)
2017/01/13(金) 19:08:40.80ID:kKg87s4oM規格上は別に問題ないんじゃない?
0062デフォルトの名無しさん (ワッチョイ 3298-los8)
2017/01/13(金) 19:14:15.66ID:LnYnqLIL0ストローマンまだ粘着してたのか
0063デフォルトの名無しさん (オッペケ Sr37-U8Ig)
2017/01/13(金) 19:24:27.07ID:weu0eN0Drまだやってんのかよ
バカに構うと時間を損するだけだぞ
0064デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 19:57:05.24ID:76Aeg2JY0constexprを理解してないのか
もう一回規格読んでから出直しなよ
重要なところは3.6.2だぞ
>>62
理解できないからって、おかしな捏造してごまかすのはやめたまえ
0065デフォルトの名無しさん (ワントンキン MMe2-dqLr)
2017/01/13(金) 20:13:13.38ID:8qb1acaCMhttps://cpprefjp.github.io/reference/mutex/mutex/op_constructor.html
0066デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 20:15:51.46ID:76Aeg2JY0だから、何?
0067デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 20:19:22.63ID:76Aeg2JY0それのどこをどうよ読むと
static変数の初期化の排他制御にstd::mutexを使えると言うお笑い提案が出てくるんだ?
0068デフォルトの名無しさん (ワントンキン MMe2-dqLr)
2017/01/13(金) 20:22:34.22ID:8qb1acaCM他のスレッドより先に初期化されることが保証されているんだから排他に使えるでしょ。
まさに例で書かれてるんだけどコード読めないの?
0069デフォルトの名無しさん (ワントンキン MMe2-dqLr)
2017/01/13(金) 20:38:51.43ID:8qb1acaCM0070デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
2017/01/13(金) 20:46:26.83ID:nYJUER3p0C::a, C::b を protected のままにしたいのですが,どうしても public を要求されます.
なぜなのでしょうか
http://ideone.com/x3ymxM
0071デフォルトの名無しさん (ワッチョイ 7e6c-6SG4)
2017/01/13(金) 20:51:50.76ID:daPh3nWD0なんか色々言いたくなるけど
とりあえずmyabsがfriendじゃないから要求されてるんじゃ?
0072デフォルトの名無しさん (ワッチョイ 7e6c-6SG4)
2017/01/13(金) 20:53:38.14ID:daPh3nWD0ってエラーにそう書いてあるやん
0073デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
2017/01/13(金) 21:06:18.40ID:nYJUER3p0http://ideone.com/BhdBHO
他になにかいろいろまずいところがあるんですね.
お手を煩わすようで恐縮ですがコメントいただけないでしょうか.
よろしくお願いいたします.
0074デフォルトの名無しさん (ワッチョイ 326c-6SG4)
2017/01/13(金) 21:12:36.47ID:eTv8M5MG0明らかにfriend不要になったでしょ
比較クラスが比較対象を継承してるのも意味不明
意味わからずコード書いてる感じがするから勉強し直したほうが良い気がする
0075デフォルトの名無しさん (ワッチョイ c621-q48i)
2017/01/13(金) 21:30:49.97ID:AzvsCcDE00076デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
2017/01/13(金) 22:09:13.50ID:nYJUER3p0ありがとうございます.
確かに例示としては
http://ideone.com/Hi50Xi
で十分でした.
しかし次の場合はどうでしょうか?
不適当とは思いながら CCompare を C の継承としましたが,それでも protected がききません.
http://ideone.com/XJbnUo
http://echo.2ch.net/test/read.cgi/tech/1480579110/96
を書いている際にぶつかった問題です.
よろしくお願いいたします.
0077デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 22:20:31.99ID:76Aeg2JY0void func()
{
static std::mutex mtx; // ←これ
...
}
このmtxの初期化を排他制御するために、非ローカルなstd::mutex生成して使うと言うお笑い提案か
目の付けどころが鴻海過ぎる
0078デフォルトの名無しさん (ワントンキン MMe2-dqLr)
2017/01/13(金) 22:34:28.85ID:8qb1acaCM何言ってるのかわかんねえわ。
0079デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/13(金) 22:51:30.29ID:76Aeg2JY0自分で言い出したんだろ
>>65
0080デフォルトの名無しさん (ワッチョイ f330-emOI)
2017/01/13(金) 22:59:08.33ID:ByW8JYfQ0CCompareがアクセスできるのは自身のメンバとしてのa,bだから
概念的にいうならCCompareが持っているのはCから継承した自身のメンバ
CCompare::a,CCompare::bへのアクセス権であって
C::a,C::bへの直接のアクセス権を持っているわけではないから
0081デフォルトの名無しさん (ワントンキン MMe2-dqLr)
2017/01/13(金) 23:18:01.19ID:8qb1acaCM関数ローカルのstaticなstd::mutexをなぜmutexで保護しようとしたのかサッパリとわかんねえって言ってんの。
ランタイムライブラリとstd::mutexのデフォルトコンストラクタがconstexprである関係性の説明一つもないし相手しても出てこないって解ったから相手するのやめるよ。
最初から最後まで何が言いたいのか一ミリもわかんなかったわ。
0082デフォルトの名無しさん (ワッチョイ 7e13-dHfL)
2017/01/13(金) 23:21:37.61ID:nYJUER3p0map や priority_queue にあたえる比較関数オブジェクト(CCompare) の中に,
別のクラス(例では C) の private/protected をアクセスすることはできないのでしょうか
なんとかならないでしょうか
0083デフォルトの名無しさん (ワッチョイ f330-emOI)
2017/01/13(金) 23:59:19.90ID:ByW8JYfQ0一般的には真っ当やり方ではどうにもならない
>>76のケースならCとCCompareのunionを使って真っ当にどうにかなるのかもしれない
0084デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/14(土) 00:05:54.36ID:8QfSwFFH0関数ローカルなstatic変数の初期化は排他制御しなけりゃならない
これはOKかな?
その排他制御にstd::mutexを使えというお笑い提案が>>45
0085デフォルトの名無しさん (スプッッ Sdf2-gTkB)
2017/01/14(土) 00:37:53.00ID:rG4STkB+dランタイムライブラリじゃなければならない理由を説明するつもりならコード書いて例示すればいいんじゃないの?
断片的なコメント書くよりわかりやすいと思うぞ
0086デフォルトの名無しさん (ワッチョイ 677b-dqLr)
2017/01/14(土) 00:42:02.10ID:Q3G32+hm0関数ローカルのstatic変数の初期化を排他しなきゃいけないなんて言ってるバカを相手にしちゃいけないよ
0087デフォルトの名無しさん (ワッチョイ b633-zxSj)
2017/01/14(土) 00:47:15.28ID:/xjCjFtE0#define private public
#define protected public
異論反論は勿論認める。
0088デフォルトの名無しさん (ワッチョイ b633-zxSj)
2017/01/14(土) 00:51:08.04ID:/xjCjFtE0ネタにもなって無かったわ…ごめん。
0089デフォルトの名無しさん (ワッチョイ 3290-V/2k)
2017/01/14(土) 01:17:03.19ID:RBO90iTA0何か理由があるんですか?
0090デフォルトの名無しさん (ワッチョイ f330-emOI)
2017/01/14(土) 01:39:44.07ID:mg/r9n9z0指定したキーに対応する要素が存在しないときは新たに要素を作成するから
0091デフォルトの名無しさん (ワッチョイ b633-zxSj)
2017/01/14(土) 01:40:54.24ID:/xjCjFtE0そのキーが存在しなくても、自動的に追加する仕様だから、const にはできない。
0092デフォルトの名無しさん (ワッチョイ 4f04-lw3D)
2017/01/14(土) 02:18:12.38ID:kOBEZk8k0だから、使うな(googleスタイルガイド)やstaticローカルの参照にしろ(effective c++)
は言っているわけですけが、非ローカルstatic constexpr変数なら問題ないですよね?
0093デフォルトの名無しさん (ワッチョイ 3290-V/2k)
2017/01/14(土) 02:22:43.34ID:RBO90iTA0仕様がそうなっているからですか
わざわざatが用意されているのもそれが理由なんですね
0094デフォルトの名無しさん (ワッチョイ 677b-dqLr)
2017/01/14(土) 02:59:59.47ID:Q3G32+hm0変数にconstexpr付けたらコンパイル時定数になるから実行時の初期化とは無縁
0095デフォルトの名無しさん (ワッチョイ 1f7b-cG99)
2017/01/14(土) 08:04:44.63ID:8QfSwFFH0あーあ、はいはい
3.7
The zero-initialization (8.5) of all block-scope variables with static storage duration (3.7.1) or thread storage
duration (3.7.2) is performed before any other initialization takes place.
Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.
0096デフォルトの名無しさん (ワッチョイ 328e-U8Ig)
2017/01/14(土) 08:14:50.33ID:4HVF8lbq00097デフォルトの名無しさん (ワッチョイ 3298-los8)
2017/01/14(土) 08:16:06.74ID:BjO/qPFR0正確にはconstにできないのではなく、
constにするのは良心が咎める、だろ
データの実体はthisに指されていないわけで
0098デフォルトの名無しさん (ワッチョイ f642-SV1A)
2017/01/14(土) 11:01:30.33ID:f29MAUgw0protectedなんて使うな、あんなもんpublicと一緒だ
いくつかそれっぽいの書いてみたから好きなの使え
http://ideone.com/GkUTFI
http://ideone.com/IvYKWe
http://ideone.com/ZrgkZM
0099デフォルトの名無しさん (ワンミングク MMe2-SV1A)
2017/01/14(土) 13:46:51.12ID:TZ84v9ShM0100デフォルトの名無しさん (ワッチョイ b2ac-vSov)
2017/01/14(土) 15:44:02.75ID:SDa1ObQ20int value;
};
auto p1 = new A;
auto p2 = new A();
cout << p1->value << endl; // <- 不定
cout << p2->value << endl; // <- ゼロ
この挙動の違いは規格のどの部分で定義されてるんじゃろ?
0101デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)
2017/01/14(土) 15:59:48.64ID:kCGGguyq0■ このスレッドは過去ログ倉庫に格納されています