次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/
このスレもよろしくね。
【初心者歓迎】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
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
2017/07/29(土) 11:28:28.97ID:o30VDF4g0287デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/24(木) 22:12:47.64ID:4nWMkj3x0 Windows Phoneの開発で使うC++/CXにはpropertyが構文でサポートされているで
ていうかpropertyがあることが存在意義な感じ?(ネイティブなC++は別にあってそれはそれで利用可能
ていうかpropertyがあることが存在意義な感じ?(ネイティブなC++は別にあってそれはそれで利用可能
288デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/24(木) 22:15:25.24ID:4nWMkj3x0 データメンバ直アクセスでなくてpropertyにすると良いことがあるというのは
マーシャリングを裏で勝手にやって来る点
マーシャリングを裏で勝手にやって来る点
289デフォルトの名無しさん (ドコグロ MM72-PGrp)
2017/08/24(木) 22:28:47.63ID:TzTK1OIfM メンバ関数でいいじゃん。ということだろ。
290デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/24(木) 22:34:36.32ID:4nWMkj3x0 |
| ('A`) .oO(名前考えるのマンドクセ
/ ̄ノ( ヘヘ ̄ ̄ ̄
/
| ('A`) .oO(名前考えるのマンドクセ
/ ̄ノ( ヘヘ ̄ ̄ ̄
/
291デフォルトの名無しさん (ドコグロ MM72-PGrp)
2017/08/24(木) 22:54:26.67ID:TzTK1OIfM 0変数:getter, 1変数:setter, 尻尾付き:メンバ変数
とかは良くやるな
とかは良くやるな
292デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/25(金) 00:06:28.73ID:w8QRZZ7K0293デフォルトの名無しさん (ワッチョイ b632-+Jgu)
2017/08/25(金) 00:10:22.03ID:hVYhQQjP0 >>268
オペレーターのオーバーライドとにたような感じになると思うけど、その挟み込む処理の重さが隠蔽されてしまうという問題があって、一般には、非推奨だとおもうのだけど今はかわってきてるのかね?
たとえば、代入しているだけだとおもったら、実はファイルアクセスまでしてたとかかな。
オペレーターのオーバーライドとにたような感じになると思うけど、その挟み込む処理の重さが隠蔽されてしまうという問題があって、一般には、非推奨だとおもうのだけど今はかわってきてるのかね?
たとえば、代入しているだけだとおもったら、実はファイルアクセスまでしてたとかかな。
294デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/25(金) 00:19:32.01ID:4dE2HuPo0 >>293
>258理論によれば、老害じゃなければ一目で処理の重さがわかるんじゃね
もっとも処理の重さに関するC++の不透明さに警戒を抱くことを老害とするならば、
カーニハンやリッチーも老害にカテゴライズされてしまうが
>258理論によれば、老害じゃなければ一目で処理の重さがわかるんじゃね
もっとも処理の重さに関するC++の不透明さに警戒を抱くことを老害とするならば、
カーニハンやリッチーも老害にカテゴライズされてしまうが
295デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/25(金) 00:49:30.90ID:w8QRZZ7K0 >>294
K&Rというか生Cが嫌っている理由は「余計なことをするな」だ。
適切に使っている限りC++は不透明ではない。それでも彼等は嫌うだろ。
>>293
横だが結局は使い方次第だよ。C++はいくらでも読みにくいコードを書けるから。
ただ、きちんと使えば有用な機能だよ。
演算子オーバーロードについてはgoogleは「慎重にやれ」だね。
https://ttsuki.github.io/styleguide/cppguide.ja.html#Operator_Overloading
どうでもいいが、何故演算子は「オーバーロード」なんだ?
言われてみれば「オーバーライド」の方が適切な気がする。
K&Rというか生Cが嫌っている理由は「余計なことをするな」だ。
適切に使っている限りC++は不透明ではない。それでも彼等は嫌うだろ。
>>293
横だが結局は使い方次第だよ。C++はいくらでも読みにくいコードを書けるから。
ただ、きちんと使えば有用な機能だよ。
演算子オーバーロードについてはgoogleは「慎重にやれ」だね。
https://ttsuki.github.io/styleguide/cppguide.ja.html#Operator_Overloading
どうでもいいが、何故演算子は「オーバーロード」なんだ?
言われてみれば「オーバーライド」の方が適切な気がする。
296デフォルトの名無しさん (ワッチョイ 8642-mY/i)
2017/08/25(金) 02:45:57.11ID:g+9HiqWa0 >>293
それは言語機能の問題じゃなく実装の問題じゃない?
propertyってメンバ変数がどうなっているかに関わらずオブジェクトの状態を表すもの
言語機能の話をしているのであって
既存の機能をやりくりして似たことは出来るって言われてもって感じ
それは言語機能の問題じゃなく実装の問題じゃない?
propertyってメンバ変数がどうなっているかに関わらずオブジェクトの状態を表すもの
言語機能の話をしているのであって
既存の機能をやりくりして似たことは出来るって言われてもって感じ
297デフォルトの名無しさん (ワッチョイ ed6f-Snnh)
2017/08/25(金) 04:18:10.56ID:4FaT6XJy0 「処理の重さを隠蔽するな」なんて思想がそもそもあるのかね?
298デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/25(金) 05:23:39.04ID:RGmsOxnq0299デフォルトの名無しさん (ワッチョイ 2aef-M52T)
2017/08/25(金) 06:02:53.19ID:sj2/Y28y0 property ってパブリック変数とどう違うの?
300デフォルトの名無しさん (ドコグロ MM72-+ULf)
2017/08/25(金) 06:53:00.86ID:s9vD7wq8M301デフォルトの名無しさん (ドコグロ MM72-+ULf)
2017/08/25(金) 06:55:30.90ID:s9vD7wq8M302デフォルトの名無しさん (ワッチョイ ca9f-tmrH)
2017/08/25(金) 07:02:27.63ID:g3SOHHgl0 オーバーロードってモモンガ
303デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/25(金) 07:24:58.66ID:crVCqQ4J0304デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/25(金) 07:49:18.88ID:4dE2HuPo0 >>300
>>254〜>>258の流れをa=1;の実行速度が一目見てわかるのかどうかという問題提起の意味に解釈すた、
パフォーマンスを読みきるには何の言語であれボトルネック(ループ回数×1回の実行時間が最大の処理)の特定が必要だが
C++は演算子のオーバーロードとかインライン展開とかテンプレートがそれ以前の障害として立ちはだかる点がCより重症
パフォーマンスを上げるための手段を豊富に提供してプログラムを書く人の選択に委ねているみたいな?
つまりC++はソースコードのROM専はお断りな言語
>>295
スマン言いたかったのはK&Rではなくてカーニハンとロブ・パイクやったorz
『プログラミング作法』の第7章「性能」のところにC++の特性について(CやJavaとの比較が)書かれていた希ガス、
(目次)ttps://tatsu-zine.com/books/practice-of-programming
ちな本は売ったから手元に無い
>>297
本来のK&Rがまさにそれなのでは…
Unixの移植目的で作られた言語なので、移植性と意図通りのアセンブリコードに落ちること
(ソースコードからアセンブリコードが透けて見えること)の両立が着手時点の第一優先だったはず
故に生ポインタが言語の前面に出てきてインクリメント/デクリメントがそれぞれ2種類あった
>>254〜>>258の流れをa=1;の実行速度が一目見てわかるのかどうかという問題提起の意味に解釈すた、
パフォーマンスを読みきるには何の言語であれボトルネック(ループ回数×1回の実行時間が最大の処理)の特定が必要だが
C++は演算子のオーバーロードとかインライン展開とかテンプレートがそれ以前の障害として立ちはだかる点がCより重症
パフォーマンスを上げるための手段を豊富に提供してプログラムを書く人の選択に委ねているみたいな?
つまりC++はソースコードのROM専はお断りな言語
>>295
スマン言いたかったのはK&Rではなくてカーニハンとロブ・パイクやったorz
『プログラミング作法』の第7章「性能」のところにC++の特性について(CやJavaとの比較が)書かれていた希ガス、
(目次)ttps://tatsu-zine.com/books/practice-of-programming
ちな本は売ったから手元に無い
>>297
本来のK&Rがまさにそれなのでは…
Unixの移植目的で作られた言語なので、移植性と意図通りのアセンブリコードに落ちること
(ソースコードからアセンブリコードが透けて見えること)の両立が着手時点の第一優先だったはず
故に生ポインタが言語の前面に出てきてインクリメント/デクリメントがそれぞれ2種類あった
305デフォルトの名無しさん (ワッチョイ c6ba-E8CI)
2017/08/25(金) 08:42:44.14ID:XasQqnRJ0 >>298
いや、new もオーバーロードでしょ。
いや、new もオーバーロードでしょ。
306デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/25(金) 08:51:39.36ID:crVCqQ4J0 newはオペレーターじゃないの?
307デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/25(金) 08:53:26.21ID:mWX/padLd いやいや、newは新しいって意味
308デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/25(金) 09:08:17.73ID:crVCqQ4J0 新しくメモリのようなものを持って来るってことでしょ。
言語上ではオペレーターじゃないの?
言語上ではオペレーターじゃないの?
309デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/25(金) 09:09:11.80ID:mWX/padLd オペレーターかどうかの議論なんて誰もしてない
310デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/25(金) 09:11:08.77ID:crVCqQ4J0 オペレータはオーバーロードするもんじゃね?
まぁいいか。
まぁいいか。
311デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/25(金) 09:52:04.11ID:RGmsOxnq0312デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/25(金) 09:54:07.34ID:mWX/padLd 「本当は」とは?
C++の規格?
本来の英語の意味?
C++の規格?
本来の英語の意味?
313デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/25(金) 09:55:05.21ID:mWX/padLd 突然「本当は」とか書いても、どういう意味でどういう意図で書いたかなんてわからんぞ
314デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/25(金) 10:21:51.52ID:RGmsOxnq0 わかんなくていい
バカ以外とさえ話せれば
バカ以外とさえ話せれば
315デフォルトの名無しさん (ドコグロ MM72-+ULf)
2017/08/25(金) 12:45:56.08ID:s9vD7wq8M316デフォルトの名無しさん (ブーイモ MMf1-E8CI)
2017/08/25(金) 12:58:22.38ID:BrjL74izM >>311
いや、グローバルのオペレーターに対して、型特化を新設するんだから、newも代入も、オーバーロードでいいんだよ。って話。
c++の実現方法(クラス内定義)でイメージしちゃうから、オーバーライドと思っちゃう気持ちはわかるけど。
いや、グローバルのオペレーターに対して、型特化を新設するんだから、newも代入も、オーバーロードでいいんだよ。って話。
c++の実現方法(クラス内定義)でイメージしちゃうから、オーバーライドと思っちゃう気持ちはわかるけど。
317デフォルトの名無しさん (ワッチョイ c6d7-l/E4)
2017/08/25(金) 13:22:21.09ID:2fWpITWD0 operatorを仮想関数にしたことないや
318はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a15-2x4P)
2017/08/25(金) 13:27:32.63ID:a70Vb5yP0 そうか。
319デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/25(金) 14:12:03.69ID:RGmsOxnq0 ::operator newは新設か?
ユーザー定義するとビルトインを置き換えるだろ
ユーザー定義するとビルトインを置き換えるだろ
320デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/25(金) 14:14:35.88ID:11RxMW0L0 >>319
だからオーバーライドだというの?
だからオーバーライドだというの?
321デフォルトの名無しさん (ワッチョイ c67a-RUyu)
2017/08/25(金) 21:42:16.87ID:0c3f6Usc0322デフォルトの名無しさん (ワッチョイ a511-l/E4)
2017/08/25(金) 22:11:25.23ID:IbGqUCQq0 operatorをオーバーライドしてる人いるみたいだけど、operatorを仮想関数にするのってどういう時なの?
323片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-sbdr)
2017/08/25(金) 22:17:04.37ID:M7y+0IYNd >>322
ポインタから多態を利用じゃねーの?
ポインタから多態を利用じゃねーの?
324片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-sbdr)
2017/08/25(金) 22:28:47.46ID:M7y+0IYNd ポインタじゃなくてC++参照ね。
325デフォルトの名無しさん (ワッチョイ a511-l/E4)
2017/08/25(金) 22:37:18.66ID:IbGqUCQq0 >>323
具体的には何のoperatorをオーバーライドしてるの?
具体的には何のoperatorをオーバーライドしてるの?
326デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/25(金) 22:39:23.28ID:11RxMW0L0 遺伝子
327片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-sbdr)
2017/08/25(金) 22:45:02.30ID:M7y+0IYNd operator==を仮想化したら、多態性が必要な状況であれこれはかどるだろう。
Numberクラスを基底として、RealクラスやらComplexクラスを作ったりしたら、同値確認にoperator==を使いたくなるだろう。
Numberクラスを基底として、RealクラスやらComplexクラスを作ったりしたら、同値確認にoperator==を使いたくなるだろう。
328デフォルトの名無しさん (ワッチョイ 8642-mY/i)
2017/08/25(金) 22:47:00.20ID:g+9HiqWa0 男はオーバーロード
女はオーバーライド
女はオーバーライド
329デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/25(金) 23:16:33.27ID:11RxMW0L0 >>327
それってダブルディスパッチの問題起きないの?
それってダブルディスパッチの問題起きないの?
331デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/25(金) 23:44:46.18ID:11RxMW0L0 ?
332デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/25(金) 23:58:05.92ID:w8QRZZ7K0333デフォルトの名無しさん (ワッチョイ c6ba-E8CI)
2017/08/26(土) 00:07:55.23ID:NVd9gXan0 >>327
RealクラスとComplexクラスを比較した時の振る舞いが直感的じゃなくね?
RealクラスとComplexクラスを比較した時の振る舞いが直感的じゃなくね?
334デフォルトの名無しさん (オッペケ Sr6d-9IFt)
2017/08/26(土) 00:16:33.84ID:m69mKCvsr はてoverloadとoverrideは排他的な存在だっただろうか
ちなみに規格で::newはreplace, displace
overrideとは言わない
ちなみに規格で::newはreplace, displace
overrideとは言わない
335片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-sbdr)
2017/08/26(土) 00:17:51.21ID:HPL6ZAk0d >>333
その場合はオーバーロードよりも強力なダブルディスパッチを使うのが妥当だった。すまね。
その場合はオーバーロードよりも強力なダブルディスパッチを使うのが妥当だった。すまね。
336デフォルトの名無しさん (ワッチョイ ca9f-tmrH)
2017/08/26(土) 00:20:52.21ID:kchnKiPS0 まだおまいらオーバーなんちゃらで言い争っているのかw
337片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-sbdr)
2017/08/26(土) 00:39:36.17ID:HPL6ZAk0d338デフォルトの名無しさん (ワッチョイ a511-l/E4)
2017/08/26(土) 03:28:35.80ID:KpMB1a9f0 >>332
operator newって仮想関数にできなくない? なんでオーバーライドが的確なの?
operator newって仮想関数にできなくない? なんでオーバーライドが的確なの?
339デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/26(土) 08:56:30.09ID:jcvKb5O50340デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/26(土) 17:00:12.26ID:dtKp7Pu80 >>334
排他的くねなぜならシグネチャが変わらないオーバーロードは無いしシグネチャが変わるオーバーライドもこれまた無いからだ
排他的くねなぜならシグネチャが変わらないオーバーロードは無いしシグネチャが変わるオーバーライドもこれまた無いからだ
341デフォルトの名無しさん (オッペケ Sr6d-9IFt)
2017/08/26(土) 17:19:10.37ID:XR3UemNVr そうか?
https://ideone.com/VOwt42
これはオーバーロードかつオーバーライドだと思うが
オーバーロードは特定の関数について言及しているのではなく同一スコープに同一の名前が複数存在する状態を指すものだと思っとりました
https://ideone.com/VOwt42
これはオーバーロードかつオーバーライドだと思うが
オーバーロードは特定の関数について言及しているのではなく同一スコープに同一の名前が複数存在する状態を指すものだと思っとりました
342デフォルトの名無しさん (ワッチョイ ca11-+ULf)
2017/08/26(土) 18:47:41.02ID:O53zOlu10343デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/26(土) 19:44:51.20ID:dtKp7Pu80 >>342
あー左様かvoid B::f(int)のオーバーライドとf()のオーバーロードが同時にありえるのか、
完全に排他的(背反)というわけでもないな
ただしそれぞれ独立な概念とは言える
なぜなら下記の4通り全ての組み合わせが有り得、互いの成立要件に他方の成立の真偽が関係しないだから、
1. オーバーライド∧オーバーロード
2. オーバーライド∧¬オーバーロード
3. ¬オーバーライド∧オーバーロード
4. ¬オーバーライド∧¬オーバーロード
あー左様かvoid B::f(int)のオーバーライドとf()のオーバーロードが同時にありえるのか、
完全に排他的(背反)というわけでもないな
ただしそれぞれ独立な概念とは言える
なぜなら下記の4通り全ての組み合わせが有り得、互いの成立要件に他方の成立の真偽が関係しないだから、
1. オーバーライド∧オーバーロード
2. オーバーライド∧¬オーバーロード
3. ¬オーバーライド∧オーバーロード
4. ¬オーバーライド∧¬オーバーロード
344デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/26(土) 19:47:02.66ID:dtKp7Pu80 訂正
△: ただしそれぞれ独立な概念とは言える
○: ただしそれならそれでそれぞれ独立な概念とは言える
△: ただしそれぞれ独立な概念とは言える
○: ただしそれならそれでそれぞれ独立な概念とは言える
345デフォルトの名無しさん (ワッチョイ b632-+Jgu)
2017/08/26(土) 23:26:52.66ID:rkE5GYva0 同じ名前の関数で、引数が同じならオーバーライド、 引数が違えばオーバーロードだよ?
そんなに難しい話じゃないはずだった気がしたんだけどな。
そんなに難しい話じゃないはずだった気がしたんだけどな。
346デフォルトの名無しさん (ワッチョイ caaa-vgeI)
2017/08/26(土) 23:42:30.55ID:eHXsO5oX0 >>345
usual な operator new は、いつも
void* operator new(std::size_t);
というシグネチャなのに、なぜオーバロードなのか
という話題だったのでは?
usual な operator new は、いつも
void* operator new(std::size_t);
というシグネチャなのに、なぜオーバロードなのか
という話題だったのでは?
347デフォルトの名無しさん (オッペケ Sr6d-9IFt)
2017/08/27(日) 00:10:24.07ID:NCmIfXRWr 「同じ名前の関数で、引数が同じならオーバーライド、 引数が違えばオーバーロードだよ?」
これまた珍説を
これまた珍説を
349デフォルトの名無しさん (ワッチョイ ca9f-tmrH)
2017/08/27(日) 00:54:36.33ID:DagGpBhC0 おまいらのアタマがオーバーフロー
350デフォルトの名無しさん (ワッチョイ 29e4-xRau)
2017/08/27(日) 02:06:53.19ID:99717IEt0 みんな人に説明できるだけのまともな言語能力を備えてから来てくれ
あとクソみたいな反論をするのもやめよう
あとクソみたいな反論をするのもやめよう
351デフォルトの名無しさん (オッペケ Sr6d-9IFt)
2017/08/27(日) 07:10:35.78ID:NCmIfXRWr352デフォルトの名無しさん (ワッチョイ a511-l/E4)
2017/08/27(日) 10:16:57.94ID:FD5yZ+sq0 2010年にも同じような話あったみたいね
https://cpplover.blogspot.jp/2010/08/overloadoverridehiding.html
https://cpplover.blogspot.jp/2010/08/overloadoverridehiding.html
353デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/27(日) 13:59:49.66ID:nap9vlyD0 constオブジェクトのデストラクタって
一般に中で非constメソッドを呼んでいるのに
なんで合法に呼び出されるの?
それとも合法に見えるのはVC++固有?
プロセスが死ぬまで破棄されないのが正しいロジックなんじゃないの
一般に中で非constメソッドを呼んでいるのに
なんで合法に呼び出されるの?
それとも合法に見えるのはVC++固有?
プロセスが死ぬまで破棄されないのが正しいロジックなんじゃないの
354はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a15-2x4P)
2017/08/27(日) 15:08:55.59ID:hmah67i90 const の考え方には logical const と bitwise const があって、
logical const を実現するために言語としては bitwise const を基本として要求してる感じ。
logical const ってのは論理的な const 性で、
bitwise const ってのはビットパターンとして不変ってことね。
mutable キーワードを付ければ const なメンバ関数からも操作できるデータメンバを
作れるけど、これは bitwise const でなくてもよくなるだけで
logical const であることは要求される。
(その性質を満たすようにプログラマが配慮しないといけない。
コンパイラは面倒みてくれない。
reinterpret_cast と同じくらいには危険で面倒くさいと思う)
寿命が尽きたオブジェクトにはアクセスは許されないから
もはや logical も bitwise も関係なく const 性は無意味になる。
logical const を実現するために言語としては bitwise const を基本として要求してる感じ。
logical const ってのは論理的な const 性で、
bitwise const ってのはビットパターンとして不変ってことね。
mutable キーワードを付ければ const なメンバ関数からも操作できるデータメンバを
作れるけど、これは bitwise const でなくてもよくなるだけで
logical const であることは要求される。
(その性質を満たすようにプログラマが配慮しないといけない。
コンパイラは面倒みてくれない。
reinterpret_cast と同じくらいには危険で面倒くさいと思う)
寿命が尽きたオブジェクトにはアクセスは許されないから
もはや logical も bitwise も関係なく const 性は無意味になる。
355デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/27(日) 15:29:34.75ID:nap9vlyD0 >>354
>寿命が尽きたオブジェクトにはアクセスは許されないから
>もはや logical も bitwise も関係なく const 性は無意味になる。
これはだいたいワカタ
前半はわからん
bitwise const でないオブジェクトがROMに割り付けられたり、とか、
bitwise const でないオブジェクトがmemcpy()的手段で同じビットパターンに繰り返し上書きされるみたいな
処理があったりするとbitwise constでないことは致命的だが
それ以外のケースではconstといいつつクラス内部ではmutableな扱いであっても全く実害無いんじゃ…
ていうかそもそもC++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が、、
>寿命が尽きたオブジェクトにはアクセスは許されないから
>もはや logical も bitwise も関係なく const 性は無意味になる。
これはだいたいワカタ
前半はわからん
bitwise const でないオブジェクトがROMに割り付けられたり、とか、
bitwise const でないオブジェクトがmemcpy()的手段で同じビットパターンに繰り返し上書きされるみたいな
処理があったりするとbitwise constでないことは致命的だが
それ以外のケースではconstといいつつクラス内部ではmutableな扱いであっても全く実害無いんじゃ…
ていうかそもそもC++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が、、
356はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a15-2x4P)
2017/08/27(日) 16:21:07.86ID:hmah67i90 >>355
logical const であれば性質として充分だよ。
だけど、それをコンパイラがチェックすることは出来ないから、
原則としては bitwise const を要求して、
それがちゃんとできてなけりゃエラーも出す。
だけど、 bitwise でなくても logical に出来る場面では
プログラマの責任でやるよっていうのを mutable キーワードで表すってわけ。
logical const であれば性質として充分だよ。
だけど、それをコンパイラがチェックすることは出来ないから、
原則としては bitwise const を要求して、
それがちゃんとできてなけりゃエラーも出す。
だけど、 bitwise でなくても logical に出来る場面では
プログラマの責任でやるよっていうのを mutable キーワードで表すってわけ。
357デフォルトの名無しさん (ワッチョイ 294d-vgeI)
2017/08/27(日) 16:23:29.96ID:Pcpci17F0 ルールを増やせば増やすほど使ってもらえない。
358デフォルトの名無しさん (ワッチョイ 29e4-xRau)
2017/08/27(日) 16:50:02.45ID:99717IEt0 しかし現実には使われているもよう
359デフォルトの名無しさん (ワッチョイ 1a91-oKtA)
2017/08/27(日) 16:52:16.64ID:OhTIHz5/0 おい、mutableなんてキーワード初めて知ったぞw
ググってみたらC++11から導入されてたんだな知らんかった、、、
ググってみたらC++11から導入されてたんだな知らんかった、、、
360デフォルトの名無しさん (ワントンキン MM5a-aFRh)
2017/08/27(日) 16:55:16.46ID:7+G8dT33M またまたご冗談を
361はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a15-2x4P)
2017/08/27(日) 17:26:13.10ID:hmah67i90 >>359
ANSI で規格化された最初から有ったがな (´・ω・`)
ANSI で規格化された最初から有ったがな (´・ω・`)
362デフォルトの名無しさん (ワッチョイ c6ba-E8CI)
2017/08/27(日) 19:19:01.73ID:+rBIMmXP0 >>359
いやいやおいおい…
いやいやおいおい…
363デフォルトの名無しさん (オッペケ Sr6d-9IFt)
2017/08/27(日) 22:57:23.47ID:epttQBO0r 「C++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が」
標準レイアウトではないconstexprなオブジェクトはビットレベルでconstなのだろうか
constexpr struct A { constexpr A()=default; int m=1; private: int n=2; } a;
確かに疑問だ
標準レイアウトではないconstexprなオブジェクトはビットレベルでconstなのだろうか
constexpr struct A { constexpr A()=default; int m=1; private: int n=2; } a;
確かに疑問だ
364デフォルトの名無しさん (ワッチョイ 294d-vgeI)
2017/08/27(日) 23:06:36.65ID:Pcpci17F0 どんどんキーワードが増えるのは思いつきで仕様を決めてるからだ。
無能SEの下のプロジェクトではよくあること。
50年は仕様を追加しないつもりで仕様を決めてほしい。
無能SEの下のプロジェクトではよくあること。
50年は仕様を追加しないつもりで仕様を決めてほしい。
365はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a15-2x4P)
2017/08/27(日) 23:35:20.73ID:hmah67i90 コンピュータを取り巻く事情は予想の斜め上をいく形でどんどん変わるのに言語だけのんびりしとれるかいな
366デフォルトの名無しさん (ワッチョイ 29e4-xRau)
2017/08/28(月) 00:12:36.48ID:OtmMiMVk0 永久に仕様が追加されない言語なんてたくさんあるから好きなのを使いなよ
機能が必要になった背景やそれを追加することが適当だという根拠まで知ってろとは言わないからさ
機能が必要になった背景やそれを追加することが適当だという根拠まで知ってろとは言わないからさ
367デフォルトの名無しさん (ワッチョイ 294d-vgeI)
2017/08/28(月) 00:24:42.42ID:JtlNpsV60 雑魚に上から言われる筋合いはない。そんな態度だから囲まれて職質されるんだよ。
368デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/28(月) 00:26:53.59ID:GiFa6ZsP0 つ、追加しなくても1.5年待てば倍速くなるもん…!
ていうかメモリバリア周りの扱いが未だに規格化されていないのは言語としてはお寒い状況だといわざるおえない
ゆくゆくはOpenMPIを正式に取り込んでキャッシュスヌープ無しのメニーコア環境でも
最高のパフォーマンスを発揮できるだけの選択肢をプログラマに提示し、
さらにはGPGPU対応もしてホスイ、
ていうかメモリバリア周りの扱いが未だに規格化されていないのは言語としてはお寒い状況だといわざるおえない
ゆくゆくはOpenMPIを正式に取り込んでキャッシュスヌープ無しのメニーコア環境でも
最高のパフォーマンスを発揮できるだけの選択肢をプログラマに提示し、
さらにはGPGPU対応もしてホスイ、
369デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/28(月) 00:29:36.83ID:GiFa6ZsP0 スマンOpenMPIはOpenMPのつもりで言った!
370デフォルトの名無しさん (ワッチョイ 41e1-xc3z)
2017/08/28(月) 01:19:26.30ID:83bJD8zl0 openmpみたいなマクロまみれよりtbbのほうが好き
371デフォルトの名無しさん (ワッチョイ 294d-vgeI)
2017/08/28(月) 01:23:37.61ID:JtlNpsV60 そんなに新機能を追加したいなら、新しく別言語を創れ。JavaやC#みたに成功して普及した事例はいくらでもある。
一度普及した言語に、碌に実務でコードも書いたことないような輩が後からやってきてデタラメな糞仕様を追加するんじゃない。
一度普及した言語に、碌に実務でコードも書いたことないような輩が後からやってきてデタラメな糞仕様を追加するんじゃない。
372デフォルトの名無しさん (ワッチョイ 29e4-xRau)
2017/08/28(月) 01:31:42.56ID:OtmMiMVk0 後から来た輩(ビャーネ・ストラウストラップ)
373デフォルトの名無しさん (ワッチョイ 294d-vgeI)
2017/08/28(月) 01:37:29.69ID:JtlNpsV60 CとC++が同じ言語と思ってるとは、さすが見込みどおりの雑魚。
374デフォルトの名無しさん (ワッチョイ feea-w74m)
2017/08/28(月) 02:11:44.25ID:nC18rNgy0 実務でコード書く人=Windowフォームにボタンを乗せる仕事の人
375はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a15-2x4P)
2017/08/28(月) 03:06:17.85ID:yPLR2tUq0 ライブラリの蓄積もあるからさ。 負債の蓄積とのバランスだよねー。
ときどき Go とか Rust とかみたいなのが出てきて一新してくれりゃいいんだけど、
C++ はともかく C はいつまでも死なない気がする。
ときどき Go とか Rust とかみたいなのが出てきて一新してくれりゃいいんだけど、
C++ はともかく C はいつまでも死なない気がする。
376デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/28(月) 07:31:44.71ID:GiFa6ZsP0 別に新機能のほしいものリストを無秩序に書き連ねたわけではないもん;;
C++はSimulaの代替品として登場した時点から実行時パフォーマンスの追求を意識していたし、
理解しやすさなら他の言語を選択すればよい昨今においては
特に実行時パフォーマンスの追求こそがC++の存在意義として強調されるべき
テンプレートによるメタプログラミングに最高の効率を阻害する穴があれば塞がれねばならないし、
最適化がほっといたら中途半端にとどまるケースには尻を叩くキーワードが追加されねばならないし、
そのときどきのアーキテクチャーの詳細に立ち入ってでもあらゆる実行時パフォーマンス追求手段が
プログラマに提示されねばならない
インテリセンスがまともに働かないとかテンプレートの分割コンパイルがもはや完成しないバベルの塔だとか
言語規格が変わり続けて解説書が分厚くなる一方だといった側面の不調法はそうであってこそ許容される、
C++はSimulaの代替品として登場した時点から実行時パフォーマンスの追求を意識していたし、
理解しやすさなら他の言語を選択すればよい昨今においては
特に実行時パフォーマンスの追求こそがC++の存在意義として強調されるべき
テンプレートによるメタプログラミングに最高の効率を阻害する穴があれば塞がれねばならないし、
最適化がほっといたら中途半端にとどまるケースには尻を叩くキーワードが追加されねばならないし、
そのときどきのアーキテクチャーの詳細に立ち入ってでもあらゆる実行時パフォーマンス追求手段が
プログラマに提示されねばならない
インテリセンスがまともに働かないとかテンプレートの分割コンパイルがもはや完成しないバベルの塔だとか
言語規格が変わり続けて解説書が分厚くなる一方だといった側面の不調法はそうであってこそ許容される、
377デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/28(月) 07:36:18.26ID:GiFa6ZsP0 機械の方が人間より賢くプログラムするようになってアセンブラが滅びたら
Cも滅びる気がする
Cも滅びる気がする
378デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/28(月) 07:36:46.75ID:96+DvSIX0 ウニファイドコールシンタックスを直ちに入れるのです。
コードサジェストが爆発してもいいじゃない。
コードサジェストが爆発してもいいじゃない。
379デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/28(月) 07:43:38.48ID:96+DvSIX0380デフォルトの名無しさん (ワッチョイ cac5-5mwo)
2017/08/28(月) 07:58:00.50ID:GiFa6ZsP0 中間言語とか3番地コードと条件判断とgotoで必要にしてほぼ十分なのでは…
381デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/28(月) 08:00:37.13ID:96+DvSIX0382デフォルトの名無しさん (ブーイモ MMb9-E8CI)
2017/08/28(月) 12:49:34.85ID:0HhHgrwNM ちょっとしたコーディングミスで、以下の簡易コードように書いてしまって、ハマったのですが、コンパイルエラーにならなかった事に驚きました。
string a(何らかの文字列);
string s = s.replace(置換指示); //a.replace() と書こうとした。
コピーコンストラクトの右辺に、構築中(?)の自分自身を使ってしまったと言う事なのですが、これは規格上合法なのでしょうか?
string a(何らかの文字列);
string s = s.replace(置換指示); //a.replace() と書こうとした。
コピーコンストラクトの右辺に、構築中(?)の自分自身を使ってしまったと言う事なのですが、これは規格上合法なのでしょうか?
383デフォルトの名無しさん (ブーイモ MMb9-E8CI)
2017/08/28(月) 12:59:59.78ID:0HhHgrwNM ↑のサンプル貼っておきます。
https://ideone.com/X4ILlf
https://ideone.com/X4ILlf
384デフォルトの名無しさん (ワッチョイ ad09-tVhQ)
2017/08/28(月) 13:04:19.26ID:96+DvSIX0 x^=x でゼロになるんだっけ。
一応昔からある文法だけど。
一応昔からある文法だけど。
385デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/28(月) 16:57:17.16ID:KK7lC/68d >>384
それの使い道がよくわからん
コンパイラと環境によっては x=0 より速かったりとか?
即値は全て名前を付けなきゃいけないとかいう糞コーディングルールの回避とか?
volatileをつけて、
ダミーリードと0クリアを1文で書けるとか?
思い付くのはこのくらい
それの使い道がよくわからん
コンパイラと環境によっては x=0 より速かったりとか?
即値は全て名前を付けなきゃいけないとかいう糞コーディングルールの回避とか?
volatileをつけて、
ダミーリードと0クリアを1文で書けるとか?
思い付くのはこのくらい
386デフォルトの名無しさん (ワッチョイ 4acd-Xu5m)
2017/08/28(月) 17:22:45.55ID:3VrqihWx0 コンストラクタが実行される前なのでオブジェクトの内容は不定だろうし
不定なオブジェクトにも適切にアクセスする場合なら合法かもしれない
ただ不定な変数を使って何かしようとすると途端に undefined behavior 地雷を
踏むことが多いのでそこで頑張っても実りがあるとも思えないけど
不定なオブジェクトにも適切にアクセスする場合なら合法かもしれない
ただ不定な変数を使って何かしようとすると途端に undefined behavior 地雷を
踏むことが多いのでそこで頑張っても実りがあるとも思えないけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 現役ドラフト発表WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 【写真】今日は刺身食べる事にした
- 俺はきっと"全部"嫌いなんだ。息づく全てが俺を苛つかせるんだ。
- 愛国者「大東亜戦争はアジア解放のための戦い」 [834922174]
