次スレを立てる時は本文の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/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
探検
C++相談室 part140
■ このスレッドは過去ログ倉庫に格納されています
2019/01/13(日) 05:56:22.70ID:9RrR7Arz
724デフォルトの名無しさん
2019/02/12(火) 11:46:23.37ID:LAva8DO1 >>723
TYPE *ptr = new TYPE;
の場合は、delete ptr; で、
TYPE *ptr = new TYPE[N];
の場合は、delete [] ptr;
と書くのが C++ の原定義。ここが、C++ のちょっと怖い気がするところ。
間違えてても、コンパイル段階ではエラーになってくれない。
TYPE *ptr = new TYPE;
の場合は、delete ptr; で、
TYPE *ptr = new TYPE[N];
の場合は、delete [] ptr;
と書くのが C++ の原定義。ここが、C++ のちょっと怖い気がするところ。
間違えてても、コンパイル段階ではエラーになってくれない。
725デフォルトの名無しさん
2019/02/12(火) 11:55:45.12ID:8lolhehX ほんそれω
726デフォルトの名無しさん
2019/02/12(火) 12:07:41.98ID:rbyp88AN deleteにカッコつけるのってちょっと配列を特別視してて嫌だわ。
配列を実現するにしても、[]表記を捨ててもいいんじゃないの。
配列を実現するにしても、[]表記を捨ててもいいんじゃないの。
727デフォルトの名無しさん
2019/02/12(火) 12:14:13.71ID:NT60/ZFg その辺は禿先生も失敗だったと認めてるけど今更変えられないんだよ
new[]は一切使わず、配列をnewするときはstd::arrayを使うのが今時の推奨スタイルです
new[]は一切使わず、配列をnewするときはstd::arrayを使うのが今時の推奨スタイルです
728デフォルトの名無しさん
2019/02/12(火) 12:14:29.27ID:2XqJFBgN 今時はstd::unique_ptrを使えという人もいるかも知れん。
newとdeleteでいいと思うが念のため。
newとdeleteでいいと思うが念のため。
729デフォルトの名無しさん
2019/02/12(火) 14:38:12.08ID:J9X/W0+J Linuxのシステムコールオススメ本ありますか?
730はちみつ餃子 ◆8X2XSCHEME
2019/02/12(火) 14:52:25.40ID:jYEPbswv たしかオブジェクトは、それと同じ型を要素とする大きさが 1 の配列と同じレイアウトだっていう保証は
どっかに書いてなかったっけ? (C++ じゃなくて C だっけ? うろ覚えですまん。)
それを前提とすると delete と delete[] の区別を導入してしまったのは不用意だよな。
malloc / free では区別なしに出来てたわけだし。
どっかに書いてなかったっけ? (C++ じゃなくて C だっけ? うろ覚えですまん。)
それを前提とすると delete と delete[] の区別を導入してしまったのは不用意だよな。
malloc / free では区別なしに出来てたわけだし。
731デフォルトの名無しさん
2019/02/12(火) 14:54:20.86ID:ihSW1Mfy >>730
オーバーロード
オーバーロード
732デフォルトの名無しさん
2019/02/12(火) 15:08:09.96ID:dWGWBM0h >>730
ヘッダ部分を除いたデータ部分としては完全に同じといっても過言ではないんだけど、
ptr = new TYPE; とした場合は、C++ の仕様上は
メモリブロックの先頭に「配列の場合には埋め込まれるところの要素数」をコンパイラは
必ずしも埋め込まなくても良いという事になっていて、その場合、delete 命令から見ると、
要素数1の配列とは同じではない。ただし、VC++ の場合には、危険を避けるため、
delete と delete [] は、どちらを書いても問題なく動作するようになっている
という文書を読んだ事が有る。
(C++元々の)仕様は、なるべくメモリ使用量も検査量も少なくして効率を上げる、
という哲学から来るものなんだけど、型検査をがちがちにして安全性を高めている一方で、
非常に危険な仕様になっていると言えなくもない。ただし、TYPE が小さなオブジェクトの
場合、new TYPE において、メモリブロックのヘッダ部分を配列と同じ構造にしてしまうの
は、結構、メモリの無駄使いにはなる。ただし、それもC#なんかの無駄と比べれば
すずめの涙程度の全然問題ない程度のものではある。しかし、それだけ、C++が効率が
良いはずではある。
ヘッダ部分を除いたデータ部分としては完全に同じといっても過言ではないんだけど、
ptr = new TYPE; とした場合は、C++ の仕様上は
メモリブロックの先頭に「配列の場合には埋め込まれるところの要素数」をコンパイラは
必ずしも埋め込まなくても良いという事になっていて、その場合、delete 命令から見ると、
要素数1の配列とは同じではない。ただし、VC++ の場合には、危険を避けるため、
delete と delete [] は、どちらを書いても問題なく動作するようになっている
という文書を読んだ事が有る。
(C++元々の)仕様は、なるべくメモリ使用量も検査量も少なくして効率を上げる、
という哲学から来るものなんだけど、型検査をがちがちにして安全性を高めている一方で、
非常に危険な仕様になっていると言えなくもない。ただし、TYPE が小さなオブジェクトの
場合、new TYPE において、メモリブロックのヘッダ部分を配列と同じ構造にしてしまうの
は、結構、メモリの無駄使いにはなる。ただし、それもC#なんかの無駄と比べれば
すずめの涙程度の全然問題ない程度のものではある。しかし、それだけ、C++が効率が
良いはずではある。
733はちみつ餃子 ◆8X2XSCHEME
2019/02/12(火) 15:18:28.58ID:jYEPbswv >>732
new はランタイムの処理だ。
同じメモリプールから切り出してくるならどちらにせよ大きさの管理は必要で、
コンパイル時に型が (すなわち必要なバイトサイズが) わかっているからといって、
それで効率的にはなる余地はあんまりあるとは思えんな。
new はランタイムの処理だ。
同じメモリプールから切り出してくるならどちらにせよ大きさの管理は必要で、
コンパイル時に型が (すなわち必要なバイトサイズが) わかっているからといって、
それで効率的にはなる余地はあんまりあるとは思えんな。
734デフォルトの名無しさん
2019/02/12(火) 15:22:00.28ID:dWGWBM0h >>733
要素数が正確にわからないと、デストラクタを呼び出す回数が分からない。
要素数が正確にわからないと、デストラクタを呼び出す回数が分からない。
736デフォルトの名無しさん
2019/02/12(火) 15:44:00.70ID:dWGWBM0h >>735
生のメモリブロックも、大きさは管理されているといえばされているんだけど、
理由は分からないけど、サイズを取得するための _msize(ptr) が存在しない
ライブラリがある。あと、TYPE が小さい場合、アラインの問題もあって、
MBのサイズがTYPE が2個以上入ってしまうようになってしまう場合も有り得て、
要素数を計算する再にその場合の処理を適切にしないといけない。
恐らく出来ないわけではないはずなんだけど、そういう変な事情も
考慮して元祖の C++ は設計されたんじゃないかな。
生のメモリブロックも、大きさは管理されているといえばされているんだけど、
理由は分からないけど、サイズを取得するための _msize(ptr) が存在しない
ライブラリがある。あと、TYPE が小さい場合、アラインの問題もあって、
MBのサイズがTYPE が2個以上入ってしまうようになってしまう場合も有り得て、
要素数を計算する再にその場合の処理を適切にしないといけない。
恐らく出来ないわけではないはずなんだけど、そういう変な事情も
考慮して元祖の C++ は設計されたんじゃないかな。
737デフォルトの名無しさん
2019/02/12(火) 17:37:31.15ID:LAva8DO1 日本で最も使いやすい無料レンタルサーバーといえば、xrea だろう。
しかし、bit defender traffic light は、「黄色ランプ」になる。
これも、日本人に対するいじめの一環と考えられよう。
一応の理由としては、xrea で設置されていたバナー広告が過去に
マルウェア感染していた事があるかららしい。
いずれも日本で最も使いやすかったり普及していたり、日本人にとっては
最も重要なものばかりだ。
しかし、bit defender traffic light は、「黄色ランプ」になる。
これも、日本人に対するいじめの一環と考えられよう。
一応の理由としては、xrea で設置されていたバナー広告が過去に
マルウェア感染していた事があるかららしい。
いずれも日本で最も使いやすかったり普及していたり、日本人にとっては
最も重要なものばかりだ。
739デフォルトの名無しさん
2019/02/12(火) 18:28:54.36ID:a7xlnsdf pmrとかいう名前空間が出来ててワロ。
740デフォルトの名無しさん
2019/02/12(火) 18:55:34.22ID:rlDMzVZE スマートポインタを返す関数?について質問です
Smp<Foo> f = foo(); // こういうのがあるとき
if (foo()->bar) {} // こういうのとか
handle h = foo()->handle; // こういうのは安全なんですか?
または、スマポのデストラクタが動く瞬間はいつですか?
Smp<Foo> f = foo(); // こういうのがあるとき
if (foo()->bar) {} // こういうのとか
handle h = foo()->handle; // こういうのは安全なんですか?
または、スマポのデストラクタが動く瞬間はいつですか?
741デフォルトの名無しさん
2019/02/12(火) 19:31:38.96ID:ihSW1Mfy 実装による
742デフォルトの名無しさん
2019/02/12(火) 19:33:57.75ID:ujVln6bm >>740
uniequ_ptr/shared_ptrはチェックしない
ただ、operator bool()を持ってるから取得してすぐチェックしてやれば以降は安全
デストラクタが呼ばれるのは寿命が尽きるとき
1番上の例はfのスコープの終わり、下2つはその行の終わり
uniequ_ptr/shared_ptrはチェックしない
ただ、operator bool()を持ってるから取得してすぐチェックしてやれば以降は安全
デストラクタが呼ばれるのは寿命が尽きるとき
1番上の例はfのスコープの終わり、下2つはその行の終わり
743デフォルトの名無しさん
2019/02/12(火) 19:52:41.54ID:rlDMzVZE operator bool()について勉強になりました
if (f = foo() && f->bar) {}
こういう書き方にすればnull関係のチェックとなるというわけですね
> 下2つはその行の終わり
なるほどですね、実はそれを恐れていましたw
あほっぽいですが->barする直前にもしやデストラクタ動く?と怯えました
ありがとうございます
if (f = foo() && f->bar) {}
こういう書き方にすればnull関係のチェックとなるというわけですね
> 下2つはその行の終わり
なるほどですね、実はそれを恐れていましたw
あほっぽいですが->barする直前にもしやデストラクタ動く?と怯えました
ありがとうございます
744デフォルトの名無しさん
2019/02/12(火) 20:32:31.62ID:ujVln6bm >>743
ifの場合はその後に続く{}の終わりまで延長する、一応
ifの場合はその後に続く{}の終わりまで延長する、一応
745はちみつ餃子 ◆8X2XSCHEME
2019/02/12(火) 20:59:11.79ID:jYEPbswv >>743
最新の C++ (C++17) なら
if(auto f=foo(); f && f->bar) {}
というように初期化と条件式をセミコロンで区切った書き方もできる。
ここで宣言した変数は if 文全体の終わりがスコープの終わりになるので、
範囲が限定的、かつ、スコープの終わりがわかりやすいので、
積極的に活用したいところ。
最新の C++ (C++17) なら
if(auto f=foo(); f && f->bar) {}
というように初期化と条件式をセミコロンで区切った書き方もできる。
ここで宣言した変数は if 文全体の終わりがスコープの終わりになるので、
範囲が限定的、かつ、スコープの終わりがわかりやすいので、
積極的に活用したいところ。
746はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 00:18:46.08ID:VqRfiaP4747デフォルトの名無しさん
2019/02/13(水) 01:07:33.18ID:eXt03lvN 今までは構文の都合でconstであるべき変数もconstにできないことがあったが↓↓↓、
char c;
while ((c = *(p++), (c != '\0' && isprint(c))) {
/*...*/
}
// 以下変数cを使わないコード
これからはconstにできる↓↓↓やたー!
while (const char c = *(p++); (c != '\0' && isprint(c))) {
/*...*/
}
char c;
while ((c = *(p++), (c != '\0' && isprint(c))) {
/*...*/
}
// 以下変数cを使わないコード
これからはconstにできる↓↓↓やたー!
while (const char c = *(p++); (c != '\0' && isprint(c))) {
/*...*/
}
748デフォルトの名無しさん
2019/02/13(水) 01:12:36.96ID:eXt03lvN もうfor文とかも見境無し!
for (int i = 0; const char c = str[i]; c != '\0'; i++) {
/*...*/
}
すばらしい…!
for (int i = 0; const char c = str[i]; c != '\0'; i++) {
/*...*/
}
すばらしい…!
749デフォルトの名無しさん
2019/02/13(水) 01:37:32.24ID:fRMQw/V1 shared_ptrじゃなくてunique_ptrじゃないとだめなときってあるの?
750デフォルトの名無しさん
2019/02/13(水) 01:40:02.25ID:+/4xK8ow あるよ。
751デフォルトの名無しさん
2019/02/13(水) 01:44:30.84ID:lB+7RHzg 普通のポインタとしての運用ができる
752デフォルトの名無しさん
2019/02/13(水) 01:58:56.40ID:fRMQw/V1 shared_ptrでもできるくね
753デフォルトの名無しさん
2019/02/13(水) 02:01:16.26ID:lB+7RHzg ごめんshared_ptrが
754デフォルトの名無しさん
2019/02/13(水) 02:02:23.91ID:RwVg7GE7 基本sharedでいいけどリソース節約したいところではuniqueって感じ?
755デフォルトの名無しさん
2019/02/13(水) 03:25:00.08ID:EX0tVwso shared_future, shaed_mutex を使い分けるポイントって何でしょうか?
756デフォルトの名無しさん
2019/02/13(水) 12:15:19.31ID:e6JJwbK6 基本uniqueで、いろんな所に取り回したいのがsharedかな
所有者がはっきりしてればunique、パタパタ受け渡したり色んなので共有するならsharedが自分の基準
所有者がはっきりしてればunique、パタパタ受け渡したり色んなので共有するならsharedが自分の基準
757デフォルトの名無しさん
2019/02/13(水) 17:50:02.15ID:9xiZOSOZ c++のデスクトップアプリケーションをVS2017で作ろうと思うのですが、フォームデザイナーはないのでしょうか?
ボタンの位置などは全部コードで作る感じでしょうか?
ボタンの位置などは全部コードで作る感じでしょうか?
758デフォルトの名無しさん
2019/02/13(水) 17:52:20.25ID:lB+7RHzg mfcを追加でインストールしろ
759さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 17:52:50.90ID:25aOYuUG >>757
リソースエディタ、ダイアログエディタがそれに該当する。Win32のリソース参照。
リソースエディタ、ダイアログエディタがそれに該当する。Win32のリソース参照。
760さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 17:59:32.77ID:25aOYuUG リソースエディタでダイアログを作って、DialogBoxまたはCreateDialog系の関数でダイアログを作成できる。
761デフォルトの名無しさん
2019/02/13(水) 18:13:16.31ID:9xiZOSOZ ↑mfcというのは今はあまり使われないそうですが、c++でインターフェースを作る場合、
今どきは何が使われるんでしょうか?
ある程度いい見た目にするのなら、自作しなければいけない感じですか?
今どきは何が使われるんでしょうか?
ある程度いい見た目にするのなら、自作しなければいけない感じですか?
762はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 18:17:11.29ID:VqRfiaP4763さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 18:17:30.33ID:25aOYuUG >>761
wxWidgetとGTK3がオススメ。キャリアがほしけりゃ、Win32なんか窓から捨ててしまえ。
wxWidgetとGTK3がオススメ。キャリアがほしけりゃ、Win32なんか窓から捨ててしまえ。
764デフォルトの名無しさん
2019/02/13(水) 18:25:09.79ID:9xiZOSOZ ↑ありがとうございます
調べてみます
調べてみます
765デフォルトの名無しさん
2019/02/13(水) 18:25:23.74ID:lB+7RHzg >>761
Visual studioでは標準的
ただマイクロソフトから見切られているので今後の発展は無い
最近ならQtが人気
初心者には取っつきづらいのと日本語情報がほとんど無いのとライセンスがちょっと厳しいのとVSで完結させることはできないが移植性が高くガンガン更新されているから将来性は一番ある
今時なデザインにしたいならQt内で独自言語のQMLを使ってつくるかWebEngineをつかってhtmlとjavascriptと連携させて作る必要がある
どちらも簡単にはできないけど
Visual studioでは標準的
ただマイクロソフトから見切られているので今後の発展は無い
最近ならQtが人気
初心者には取っつきづらいのと日本語情報がほとんど無いのとライセンスがちょっと厳しいのとVSで完結させることはできないが移植性が高くガンガン更新されているから将来性は一番ある
今時なデザインにしたいならQt内で独自言語のQMLを使ってつくるかWebEngineをつかってhtmlとjavascriptと連携させて作る必要がある
どちらも簡単にはできないけど
766さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 18:31:17.25ID:25aOYuUG Qt5なんてダウンロードに数十分かかるアホなビッグシステム。
767デフォルトの名無しさん
2019/02/13(水) 18:31:55.58ID:RwVg7GE7 使うものだけダウンロードすればいいじゃん
768デフォルトの名無しさん
2019/02/13(水) 18:34:59.46ID:lB+7RHzg アホが釣れたようだな
769デフォルトの名無しさん
2019/02/13(水) 18:40:53.11ID:QnNf1eu6 >>757
Tcl/Tk
Tcl/Tk
770デフォルトの名無しさん
2019/02/13(水) 18:42:26.28ID:QnNf1eu6 >>766
ほんそれ
ほんそれ
771デフォルトの名無しさん
2019/02/13(水) 18:53:39.36ID:lB+7RHzg 使いもしないオプションを付けて時間がかかるとか言ってる人がいるってマジ?
772デフォルトの名無しさん
2019/02/13(水) 19:05:18.58ID:9xiZOSOZ >>756
htmlやcssはできるので調べてみます
htmlやcssはできるので調べてみます
773デフォルトの名無しさん
2019/02/13(水) 19:08:10.14ID:9xiZOSOZ もしかしてc++って個人で使うようなものではなかったりしますか?
774デフォルトの名無しさん
2019/02/13(水) 19:19:16.70ID:e0d6KWci775はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 20:01:48.29ID:VqRfiaP4 間違いなく C++ に出来ることは多いのだが、
要はそこまで必要な場合ってそんなに多くないでしょって話。
画像処理とか仮想通貨マイニングみたいな性能のチューニングがギリギリまで必要ってのなら
C++ を使う甲斐があるけど、 GUI を記述するのに C++ を使うのはそれほど強い必然性はない。
本来の処理をする部分が C++ で書かれているなら、
あえて GUI だけ別言語にする必要もないなっていう程度のことだと思う。
要はそこまで必要な場合ってそんなに多くないでしょって話。
画像処理とか仮想通貨マイニングみたいな性能のチューニングがギリギリまで必要ってのなら
C++ を使う甲斐があるけど、 GUI を記述するのに C++ を使うのはそれほど強い必然性はない。
本来の処理をする部分が C++ で書かれているなら、
あえて GUI だけ別言語にする必要もないなっていう程度のことだと思う。
776デフォルトの名無しさん
2019/02/13(水) 20:06:47.12ID:xfyW+H6K 意外とここアマチュア多かったのかな?
仕事でもないのにわざわざC++触るやつの気が知れん
仕事でもないのにわざわざC++触るやつの気が知れん
777デフォルトの名無しさん
2019/02/13(水) 20:24:14.55ID:RwVg7GE7 型がきっちりしてるから処理追いやすくていいと思うんだけどなあ
Javascriptで書かれたオープンソースなんて読んでもわけわからん
Javascriptで書かれたオープンソースなんて読んでもわけわからん
778はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 20:36:26.96ID:VqRfiaP4 ワイはアマチュアやで。 むしろプロは必要もないところまで取り組まんやろ。
知り合いにプロのゲームプログラマ (誰もが知っている有名シミュレーションゲームの老舗メーカーに所属)
がいるけど、 C++ の言語機能に関する知識なんて、びっくりするほど貧弱やぞ。
知り合いにプロのゲームプログラマ (誰もが知っている有名シミュレーションゲームの老舗メーカーに所属)
がいるけど、 C++ の言語機能に関する知識なんて、びっくりするほど貧弱やぞ。
779デフォルトの名無しさん
2019/02/13(水) 20:51:52.56ID:lB+7RHzg ゲームプログラマは特殊だわ
あいつら例外なくゲームのことしか頭にないし
エンジン作ってる部署の人なら詳しい人もたくさん居るだろう
あいつら例外なくゲームのことしか頭にないし
エンジン作ってる部署の人なら詳しい人もたくさん居るだろう
780デフォルトの名無しさん
2019/02/13(水) 20:52:55.58ID:C2ClsFHD 日吉の会社ね
781デフォルトの名無しさん
2019/02/13(水) 20:57:07.30ID:BFnAt9lr 可読性とデバッグのバランス考えると、
C中心で毛が生えた程度に++浅く
使うのが一番楽。
物理計算とかAIとかのが重要で
C++の文法遊びや多重にネストした
テンプレ遊びに深く付き合っても、
生産性上がんないからなあ。
C中心で毛が生えた程度に++浅く
使うのが一番楽。
物理計算とかAIとかのが重要で
C++の文法遊びや多重にネストした
テンプレ遊びに深く付き合っても、
生産性上がんないからなあ。
782デフォルトの名無しさん
2019/02/13(水) 21:36:58.08ID:D91GFqhb テンプレみたいなコンパイラ毎に動作の異なるもんに執着してたら明らかに生産性下がるわ。
783デフォルトの名無しさん
2019/02/13(水) 22:13:34.76ID:9vYYaAAU ++で生産性上がらんとか言ってる人はOOP理解出来てないだけだろ
俺も昔は同じで++に謂れのない敵意を持ってた
でも他のモダンな言語に乗り換えてファウラーやエヴァンスなどを読み漁ってOOPに習熟してから++に戻ってきたら今度は逆にCがゴミに思えるようになったよ
まあしかしこの壁を乗り越えるまでが大変なんだけどね
俺も昔は同じで++に謂れのない敵意を持ってた
でも他のモダンな言語に乗り換えてファウラーやエヴァンスなどを読み漁ってOOPに習熟してから++に戻ってきたら今度は逆にCがゴミに思えるようになったよ
まあしかしこの壁を乗り越えるまでが大変なんだけどね
784デフォルトの名無しさん
2019/02/13(水) 22:28:44.60ID:UVXSHadg 競技プログラミングはC++一択なんだが
785デフォルトの名無しさん
2019/02/13(水) 23:15:55.01ID:rqUgXbGq C++はクラスの記述コストが高すぎて真面目にOOPするには辛いわ
モダンな言語と比較して、心理的にどうしてもクラスやメソッドの粒度が大きくなりがち
モダンな言語と比較して、心理的にどうしてもクラスやメソッドの粒度が大きくなりがち
786デフォルトの名無しさん
2019/02/13(水) 23:33:32.80ID:FNLRUtkm C++クラスの最大の恩恵はRAII
ガベコレなし、値指向、デストラクタ最強
ガベコレなし、値指向、デストラクタ最強
787デフォルトの名無しさん
2019/02/13(水) 23:39:30.60ID:eXt03lvN C++は破壊的代入ができるから嫌
デフォルトがconstでないとか、言語としてどうなの…
デフォルトがconstでないとか、言語としてどうなの…
788デフォルトの名無しさん
2019/02/13(水) 23:40:51.03ID:D91GFqhb はいはいrust,rust
789デフォルトの名無しさん
2019/02/13(水) 23:45:11.06ID:lB+7RHzg お客さんが来たぞ
790デフォルトの名無しさん
2019/02/14(木) 05:24:13.40ID:SFw402Pv >>774
なるほど、自分はcgやりたいのでC++使うしかない感じですが、とりあえずc#をまともにできるようになります
なるほど、自分はcgやりたいのでC++使うしかない感じですが、とりあえずc#をまともにできるようになります
791デフォルトの名無しさん
2019/02/14(木) 16:05:08.53ID:b/dX4O0G >>782
jsみたいにブラウザ毎に動作の異なるもんに執着してたら明らかに生産性下がるわ。
jsみたいにブラウザ毎に動作の異なるもんに執着してたら明らかに生産性下がるわ。
792デフォルトの名無しさん
2019/02/14(木) 16:21:32.04ID:VFIxp5Qu クソとクソを比較するな
793デフォルトの名無しさん
2019/02/14(木) 16:58:10.52ID:2/stHPZ4 >>791
いまどきもそうなのか?
いまどきもそうなのか?
794デフォルトの名無しさん
2019/02/14(木) 18:27:36.97ID:1/Iln0l0 ブラウザごとに動作が異なるのは、マイクロソフトが憎いからであって、影響力を失った今、マイクロソフトと違う動作にする必要が無いような気がする。
795デフォルトの名無しさん
2019/02/14(木) 18:37:23.11ID:P/UAeoar まだデスクトップでは絶大なる影響力があるから駄目だ。
凋落のメドも立ってない。
凋落のメドも立ってない。
796デフォルトの名無しさん
2019/02/14(木) 18:54:11.85ID:VFIxp5Qu そしてGUIライブラリ開発者が萎えてQt一強になったりwebview的なものが流行るんですね
もうおしまいだわ
もうおしまいだわ
797デフォルトの名無しさん
2019/02/14(木) 19:01:20.69ID:DfU+cSua 未来ではリテラシーが高まってCUIが標準になってるよ
GUIはエンタメ分野でだけ生き残る
GUIはエンタメ分野でだけ生き残る
798デフォルトの名無しさん
2019/02/14(木) 19:11:38.67ID:1/Iln0l0 Windowsタブレットは中々イケてるけどな。
ちょっとだけ未来が見えるんだけど、惜しい、まだ未来じゃない。
って感じ。
手書きは流行ると思うよ。
電車の中でキーボード打つのは無理だけど、手書きなら何とかなる。
でも、ペン高いし、文字認識は驚くほどの精度だけど、図は描きにくかったり。
まだ未来は来てないんだよね。
ちょっとだけ未来が見えるんだけど、惜しい、まだ未来じゃない。
って感じ。
手書きは流行ると思うよ。
電車の中でキーボード打つのは無理だけど、手書きなら何とかなる。
でも、ペン高いし、文字認識は驚くほどの精度だけど、図は描きにくかったり。
まだ未来は来てないんだよね。
799デフォルトの名無しさん
2019/02/14(木) 23:05:43.78ID:5Y0/XHoW ウィンドーズホンは未来だった(過去形
800デフォルトの名無しさん
2019/02/15(金) 00:09:02.90ID:GRt3HKgN 参照渡しについて質問です
void hoge(const int &x) ってすると int以外の型を渡すと危険ですか?
(short、long、unsigned、doubleなど)
void hoge(int x) のほうが安全な気がするけど、別にどっちでも一緒ですか?
void hoge(const int &x) ってすると int以外の型を渡すと危険ですか?
(short、long、unsigned、doubleなど)
void hoge(int x) のほうが安全な気がするけど、別にどっちでも一緒ですか?
801デフォルトの名無しさん
2019/02/15(金) 00:21:58.58ID:LSuSmSCZ int以外の型を渡せばintに変換した一時変数が作られてその参照が渡されるからそこに危険性はない
802デフォルトの名無しさん
2019/02/15(金) 01:34:11.24ID:F2gH28Km803デフォルトの名無しさん
2019/02/15(金) 01:36:20.74ID:4dfOS9DP constの参照渡しってでかいコピーを作りたくないときだよね?
804デフォルトの名無しさん
2019/02/15(金) 01:38:17.51ID:RIb8T56M 組み込みの型で参照はいらない
805デフォルトの名無しさん
2019/02/15(金) 01:58:57.74ID:GRt3HKgN >>801-804
なるほど、安全性は一緒なんですね。
うちの会社にそういうコードを書くベテラン社員がいるので、
気になって質問させてもらいました。
やっぱり組み込み型は普通に値渡しでいいみたいですね。
なるほど、安全性は一緒なんですね。
うちの会社にそういうコードを書くベテラン社員がいるので、
気になって質問させてもらいました。
やっぱり組み込み型は普通に値渡しでいいみたいですね。
806デフォルトの名無しさん
2019/02/15(金) 06:42:38.91ID:Ayyf6Kdi c++だけで個人でソフトを完成させるのはめんどくさすぎるのですかね
807デフォルトの名無しさん
2019/02/15(金) 06:43:48.42ID:RIb8T56M 言語は関係ない
808デフォルトの名無しさん
2019/02/15(金) 07:12:10.42ID:c3qnZTh8809デフォルトの名無しさん
2019/02/15(金) 07:16:18.56ID:RIb8T56M それjavaでやってる奴見たことあるけど無駄すぎて周囲に陰で笑われてたぞ
810デフォルトの名無しさん
2019/02/15(金) 11:35:50.98ID:1MviBXkk >>808。
Cの時代から普通にあるよ。構造体で渡すまでもない場合はそれが最も効率がいい。
int add( int x, int y )
{
return x+ y;
}
float fadd( float x, float y )
{
return x+ y;
}
とか。
Cの時代から普通にあるよ。構造体で渡すまでもない場合はそれが最も効率がいい。
int add( int x, int y )
{
return x+ y;
}
float fadd( float x, float y )
{
return x+ y;
}
とか。
811デフォルトの名無しさん
2019/02/15(金) 12:00:51.60ID:F9XRfxx5 MyIntとかやっちゃうの?
812デフォルトの名無しさん
2019/02/15(金) 12:19:55.21ID:PR4djPv7 ↑とか言って人を見下す奴もゴミのようなtypedefの山には疑問を抱かないのがC++er
813デフォルトの名無しさん
2019/02/15(金) 12:29:01.92ID:QcXsKv+O logとって足し算or引き算に降格なんて良くする事でしょ
814デフォルトの名無しさん
2019/02/15(金) 12:31:45.75ID:1MviBXkk >>800
C++ で参照渡しする理由は:
1.構造体などをそのまま引数に渡すと、スタックにコピーする動作が入ってしまい、
構造体のサイズが大きいと時間がかかる。参照渡すにすると先頭アドレス
(4バイト、または、8バイト)だけがスタックにコピーされるので効率がいい。
int, float などは、中身のサイズとアドレスのサイズが変わらないので参照渡し
にしてもコピー動作に置いては効率が上がらない。そして、実際に引数を
読み取る段階では、参照渡しは1クロックほど時間が余計にかかってしまう。
2. 戻り値には1つの値/オブジェクト/変数しか返すことが出来ない。そのため、2つ以上の
値を返したい場合には、C では伝統的には、引数にポインタ渡しで変数の先頭アドレス
を渡し、そのアドレスを介して対応する変数に値を書き込む方法をとっていた。
C++ では、ポインタ * の変わりに参照 & を使うことが出来るようになった。
参照の方が見易かったり、分かりやすかったりする事があるといわれている。
3. const int &a や const float &a では、値を呼び出し側に返すことが出来ない。なぜなら、
const 属性が付いているから呼び出された関数側からは書き込めないため。
その上、アドレスのBIT数が、中身のBIT数と同じか、むしろ大きいので、実引数から
スタックにある仮引数へのコピー動作に置いても効率も上がらない。
さらに、参照なので、実際に読み取るときには1クロック余計な時間がかかってしまう。
だから、int a や float a で渡すほうが良い。
C++ で参照渡しする理由は:
1.構造体などをそのまま引数に渡すと、スタックにコピーする動作が入ってしまい、
構造体のサイズが大きいと時間がかかる。参照渡すにすると先頭アドレス
(4バイト、または、8バイト)だけがスタックにコピーされるので効率がいい。
int, float などは、中身のサイズとアドレスのサイズが変わらないので参照渡し
にしてもコピー動作に置いては効率が上がらない。そして、実際に引数を
読み取る段階では、参照渡しは1クロックほど時間が余計にかかってしまう。
2. 戻り値には1つの値/オブジェクト/変数しか返すことが出来ない。そのため、2つ以上の
値を返したい場合には、C では伝統的には、引数にポインタ渡しで変数の先頭アドレス
を渡し、そのアドレスを介して対応する変数に値を書き込む方法をとっていた。
C++ では、ポインタ * の変わりに参照 & を使うことが出来るようになった。
参照の方が見易かったり、分かりやすかったりする事があるといわれている。
3. const int &a や const float &a では、値を呼び出し側に返すことが出来ない。なぜなら、
const 属性が付いているから呼び出された関数側からは書き込めないため。
その上、アドレスのBIT数が、中身のBIT数と同じか、むしろ大きいので、実引数から
スタックにある仮引数へのコピー動作に置いても効率も上がらない。
さらに、参照なので、実際に読み取るときには1クロック余計な時間がかかってしまう。
だから、int a や float a で渡すほうが良い。
815デフォルトの名無しさん
2019/02/15(金) 12:49:09.91ID:1MviBXkk >>814
手短に説明するのは難しいが、float と double は、それぞれ32BIT、64BITで、
ポインタのBIT数と同じかどうかは、使ってるOSのBIT数によって違ってくる。
だから、double 型を参照渡しで渡した場合、わずかに効率が上がる場合が
絶対ないとは言い切れないかもしれない。ただし、その場合でも、参照型
の仮引数を実際に読み取るときには、「間接参照」というアセンブラで書くと、
[アドレス値] や、[ポインタ値] のようなオペランドを持った mov 命令が
1つ追加で必要になって、1クロック分余計にかかる。
なお、処理系によっては、関数呼び出しに置いては、float 型でも、double 型として
渡される場合があるかもしれない。
だから、関数呼び出しの時点でわずかに効率が上がっても、読み取る段階で
1クロック遅くなるかも知れない。だから、この位のBIT数の変数の場合で、
値を呼び出し側に戻り値として「出力(返す)」すつもりではい場合には、
参照渡しにせず、値渡しにしたほうが良いと考えられる。
手短に説明するのは難しいが、float と double は、それぞれ32BIT、64BITで、
ポインタのBIT数と同じかどうかは、使ってるOSのBIT数によって違ってくる。
だから、double 型を参照渡しで渡した場合、わずかに効率が上がる場合が
絶対ないとは言い切れないかもしれない。ただし、その場合でも、参照型
の仮引数を実際に読み取るときには、「間接参照」というアセンブラで書くと、
[アドレス値] や、[ポインタ値] のようなオペランドを持った mov 命令が
1つ追加で必要になって、1クロック分余計にかかる。
なお、処理系によっては、関数呼び出しに置いては、float 型でも、double 型として
渡される場合があるかもしれない。
だから、関数呼び出しの時点でわずかに効率が上がっても、読み取る段階で
1クロック遅くなるかも知れない。だから、この位のBIT数の変数の場合で、
値を呼び出し側に戻り値として「出力(返す)」すつもりではい場合には、
参照渡しにせず、値渡しにしたほうが良いと考えられる。
816デフォルトの名無しさん
2019/02/15(金) 13:09:37.97ID:PbZwx3xa void hoge(const int *x)と同じことだろ
817デフォルトの名無しさん
2019/02/15(金) 13:17:50.81ID:+vpba137 そんなところの速度気にする前に無駄なI/Oや描画処理がないかとかクソみたいなアルゴリズム使ってないかとかを心配しろ
818デフォルトの名無しさん
2019/02/15(金) 13:20:58.06ID:TwCl7FFb C++もC#みたいに参照渡しで呼び出す方にoutやref修飾子みたいなのを明示的に書けるようにしてほしいわ
結果を引数の参照に代入することの欠点は一見してそれが参照渡しか分からないことにある
別に強制じゃなくていいからさ
結果を引数の参照に代入することの欠点は一見してそれが参照渡しか分からないことにある
別に強制じゃなくていいからさ
819デフォルトの名無しさん
2019/02/15(金) 13:52:43.03ID:PR4djPv7 constなら区別する必要ないだろ
渡されたものを書き換えるなら生ポにすればよい
渡されたものを書き換えるなら生ポにすればよい
820デフォルトの名無しさん
2019/02/15(金) 14:12:58.62ID:TNDmXWGM >>798-799
これだな
「著作権侵害だから」という理由で「スクリーンショットを規制」するとマジで死ぬというのをかつて証明した実例がある
https://gunosy.com/articles/RImqe
これだな
「著作権侵害だから」という理由で「スクリーンショットを規制」するとマジで死ぬというのをかつて証明した実例がある
https://gunosy.com/articles/RImqe
821デフォルトの名無しさん
2019/02/15(金) 14:18:59.83ID:TNDmXWGM >>806
「だけ」で言うとフレームワークとかライブラリとかモジュールとか全部自作なら大変だな
「だけ」で言うとフレームワークとかライブラリとかモジュールとか全部自作なら大変だな
823デフォルトの名無しさん
2019/02/15(金) 14:20:59.00ID:TNDmXWGM >>810
テンプレ使え
テンプレ使え
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- (´・ω・`)おはよ
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- くそしてかがやけ
- 🪬本日のコンマ占い🧿
