C++相談室 part142
レス数が1000を超えています。これ以上書き込みはできません。
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/
C++相談室 part141
https://mevius.5ch.net/test/read.cgi/tech/1550772463/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
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 元の内容について所有権を失っているだけで普通は使える様になっている
スマポならnull相当
vectorみたいなのならemptyもしくは何らかのごみが入っているのでclearか新たに代入すればおk >>953
>元の内容について所有権を失っているだけで普通は使える様になっている
moveしたあとの変数について述べているのなら完璧な間違いだ
藻前のプログラムはバグだらけだな 合ってるだろ
ムーブ後のオブジェクトは内容は未規定だけど有効な状態だぞ、少なくとも組み込み型と標準ライブラリはな
褒められたプログラミングスタイルかはともかく、再利用すること自体が即間違いとは言えない >>951
ムーブコンストラクタを書いて自分で処理するんだよw コンパイル時に既に顧客の要求を満たしてるとかマジカッコいい 少なくとも標準ライブラリでこれが出来ないと、メンバ変数の内容一つmoveしただけで親のオブジェクトまで使えなくなる。
メンバ変数再利用する術が無いってことだからね >>957
未初期化の変数をコンパイル時に検出できるんだからmoveした後かどうかも判定できるはずでしょ >>958
メンバ変数1つムーブって、どういうこと?
普通メンバ変数は右辺値にならないでしょ。 2分木で子のスマポ所有しているような場合、付け替えとかで所有権の移動するときshared_ptrならコピーでokだけど、unique_ptrみたいなのだとmoveする事になるが、メンバ変数で持っていた子の内容をmoveしたあとその変数が再利用可能じゃないと困るだろ >>961
c++11で導入されたmoveはいわゆる所有権の移動とは違うもなので、その場合はmoveは使えないと思う。 >>962
unique_ptrのmoveが所有権の移動じゃないと言うなら一体何なら「所有権の移動」だと言うのか。 もともと右辺値参照とmoveセマンティクスの話じゃなかったっけ? ループの中で int a なる整数を使うとき、ループ内で毎回宣言するのとループの外で宣言して使い回すのどっちが結局速いの? 範囲for文を使ってそんなどうでもいいことは忘れろ >>967
逆じゃないか?
インスタンスの生成にコストがかかるときはトレードオフだが、そうでないなら可能な限りスコープを狭くなるように変数を宣言した方が良いと思う スコープ気にするならループ関係の部分だけでスコープ区切ればいいじゃん cppcheckやVisual Studioのような静的コード解析にかけると「スコープを小さくできるよ?」みたいなアドバイスが出るよね。
実際のところ、どうなんだろうね。typoしにくくなったりスタックサイズが小さくなる利点があるとは思うけど。 ちょうど今朝cppcheckかけたら
style: The scope of the variable 'c' can be reduced.
「変数 c のスコープを縮小できますよ」って出たわ。
つまり「スコープを狭くできるなら狭くすべき」っていう方針を、
(少なくともcppcheckを作ってる人は)採用してるんだろうな。
どっちが速いかについては、ちょっと最適化オプションつければ
結局同じマシン語になっちゃうんじゃないかしら。 >>967
セオリーだからって鵜呑みにするの良くないよ
(というか文面だけ覚えても意味ない スコープ広いほうが良いなら最終的に全部グローバルにしろやになるやんけ オブジェクト指向って実はprivate変数のスコープをかなり広く取ってるセミグローバル指向だと思う >>977
それってクラスを大きくしすぎているだけじゃないか? この流れは関数切り出しをまともにやってない連中が多いってことだな。。 グローバル変数と言っているのはオブジェクト指向スレを荒らしてるバカだろ 任意の型に対応する整数を返すメタ関数ってC++11の標準であったりします?
intなら1
stringなら2
みたいな
上記の技法をなんと呼ぶかわからないので検索ワードも思い付かず… 質問ですがC++のクラスのメソッドは、大別すると、
コンストラクタとデストラクタとsetterとgetterと何になるの? move? be?
ステートチェンジしていくのだから、動作になるのか? setterとgetterって何?
Javaじゃあるまいしそんなの言語要素としては用意してないよ >>991
setterとgetterが何かについてはググった方が良い
Javaは詳しくは知らないが、ググった限りにおいて
Javaでもsetter/getterを定義する専用の言語要素など用意されていない印象 で、C++/Javaどっちも
{ setter } ∪ { getter } ⊂ { メソッド }
であることは明らかだが、では
Q1. { メソッド } - ( { setter } ∪ { getter } )には何か専用の名前は無いのか?、
というのが>>909の質問の主旨。
ついでに言うと
Q2. { setter } や{ getter }というのは本当に確定した集合なのか?
と、
Q3. 「操作」と言ったときそれは{ メソッド }を指すのか { メソッド } - ( { setter } ∪ { getter } ) を指すのかどっちなんじゃ、
とかも知りたい >>994
シグナルとスロットというのはGUI操作を処理する目的のブツなので、
実行時の時間コストがゼロコストに近いことを気体されているハズ、
よって { メソッド } - ( { setter } ∪ { getter } ) の全て(この中には実行時の時間コストが青天井のブツも含まれる)を
包含しはしないのではないか、
まあここまで書いてオモタが、 { setter } ∪ { getter } こそ実行時時間コスト0を期待されるから、
setterやgetterは次の定義で良いのではないかという気がしてきた…
- 属性を取得する目的の操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがgetter
- 属性を変更する目的の操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがsetter 後ろ2行訂正orz、
正:
- 属性を取得する目的で設けられた操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがgetter
- 属性を変更する目的で設けられた操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがsetter 補足すると、「属性を取得する目的」や「属性を変更する目的」というのは、
インターフェースをクラスの主要な機能とは独立に変更できることを暗に言っている
例えばクラスFooのsetBar()が真にsetterならば、
属性をsetterでセットするのをやめて(Foo::setBar()を廃止して)ファイルから
直接読み込むメソッドFoo::readFromFile()に置き換えても、
クラスの主要な機能Foo::mainFunc()は変更せずに済むハズ
getterについても同様 operator=がsetterでoperator()がgetterにならない? c++かどうかなんて関係ない、オレオレ分類しているだけだろ ずれてるのを承知で書くけど、直接読み込むメソッドってやつも含め setter なんてない方がいいよ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 1時間 44分 23秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。