【初心者歓迎】C/C++室 Ver.84【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/04/28(日) 17:27:19.70ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.83【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1363154865/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
0153デフォルトの名無しさん
2013/05/15(水) 12:37:12.770154デフォルトの名無しさん
2013/05/15(水) 12:59:43.870155デフォルトの名無しさん
2013/05/15(水) 13:09:10.740156デフォルトの名無しさん
2013/05/15(水) 15:56:34.22hppってヘッダーにcppのコード突っ込んでリンカ解決やら楽しようぜ
h+cpp だから hpp だカッコいいだろう!!
みたいなイメージだ
0157デフォルトの名無しさん
2013/05/15(水) 17:58:27.63クラスのインスタンスを人間にたとえると
基底クラスの顔と派生クラスの顔
つまり2つの顔を持つ人間が1人生まれる
0158デフォルトの名無しさん
2013/05/15(水) 17:58:48.01発言者は「クラスのインスタンスを
生成」のつもりであることが多い。なので
派生クラスのインスタンスを複数生成したら
それぞれに基底クラスのインスタンスが含まれる
0159デフォルトの名無しさん
2013/05/15(水) 18:04:20.080160デフォルトの名無しさん
2013/05/15(水) 18:17:38.64それぞれの翻訳単位で基底クラスが暗黙にインスタンス化される。
だがODRで一つと見なされるのでインスタンスの数を意識する必要はない。
コンパイル時間を短縮したいならexternでインスタンス化を抑制する
0161デフォルトの名無しさん
2013/05/15(水) 18:44:10.49インスタンス化できる?
派生クラスのインスタンス化に
必要不可欠のような
0162デフォルトの名無しさん
2013/05/15(水) 19:49:38.87逆?
0163デフォルトの名無しさん
2013/05/15(水) 20:00:26.86平穏がおとずれたようだ
0164デフォルトの名無しさん
2013/05/15(水) 20:03:42.010165デフォルトの名無しさん
2013/05/15(水) 20:10:12.64つまりUnixerは底辺。
msは底辺以下、
coolなguyはMacを選ぶね
0166デフォルトの名無しさん
2013/05/15(水) 20:28:03.360167デフォルトの名無しさん
2013/05/15(水) 20:30:00.840168デフォルトの名無しさん
2013/05/15(水) 20:33:57.17MS:馬鹿が使う
林檎:自称かっこいい奴が使う
林檎は芸術家jobsの芸術作品だからな
0169デフォルトの名無しさん
2013/05/15(水) 20:35:44.05何でかわからないけどマカーの基地外率は異常
0170デフォルトの名無しさん
2013/05/15(水) 20:42:27.85生成するとAAとAのインスタンスも(見えないけど)生成される。
じゃないとスーパークラスのメソッドを呼び出せない。
0171デフォルトの名無しさん
2013/05/15(水) 20:42:53.09馬鹿が自称かっこいい奴を見てキチガイいって思うのは
馬鹿だからしょうがない
0172デフォルトの名無しさん
2013/05/15(水) 20:47:16.940173デフォルトの名無しさん
2013/05/15(水) 20:55:25.05Aを継承したC
BとCを継承したD
Dのインスタンス中に居るAのインスタンスは単一なのか
BにまつわるAのインスタンスと
CにまつわるAのインスタンスとの都合2つに分かれるのか
こういう話?
0174デフォルトの名無しさん
2013/05/15(水) 20:56:46.040175152
2013/05/15(水) 21:19:55.150176デフォルトの名無しさん
2013/05/15(水) 22:54:57.47派生クラスのインスタンスの数に応じて基底クラスのインスタンスも複数生成される
struct X { int a; };
struct Y : X {};
Y y1;
Y y2;
のとき y1.a と y2.a は別物
0177デフォルトの名無しさん
2013/05/15(水) 23:02:17.630178152
2013/05/15(水) 23:52:15.81基底クラスAがあり、そのAの派生クラスBがあり
Bのインスタンスを何度も生成した場合
B1とB2の基底クラスインスタンスAは
A単体なのかA1、A2と増えていくのかどちらですか?
0179片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/16(木) 00:00:10.270180デフォルトの名無しさん
2013/05/16(木) 00:17:06.64基底クラスインスタンスなんてわけわからん語を作るな
コードを書いて説明しろ
0181デフォルトの名無しさん
2013/05/16(木) 00:18:53.86会社で煙たがられる存在
0182デフォルトの名無しさん
2013/05/16(木) 00:20:36.180183デフォルトの名無しさん
2013/05/16(木) 01:01:07.62だから顔の数じゃなくてボディの数で数えろと
0184デフォルトの名無しさん
2013/05/16(木) 01:46:42.40何度も生成するから
1、2、3、4、5…
と増えていくんだよ
0185デフォルトの名無しさん
2013/05/16(木) 07:19:43.02質問するより、自分でコード書いた方が早いだろ
0186デフォルトの名無しさん
2013/05/16(木) 09:52:49.32コード貼ってどうこうしたほうが…そもそも自作自演っぽく思えてきたけど
0187デフォルトの名無しさん
2013/05/16(木) 11:35:44.57QZの自演ってことはありうる
0188デフォルトの名無しさん
2013/05/16(木) 12:25:09.68結局何を聞きたいのかさっぱりだ
0189デフォルトの名無しさん
2013/05/16(木) 12:34:47.33基底のインスタンスも増えていったらメモリの無駄じゃないの?
0190デフォルトの名無しさん
2013/05/16(木) 12:38:06.02だったら派生せずに新しくクラスを作ればいいじゃん
0191デフォルトの名無しさん
2013/05/16(木) 12:38:42.93派生のインスタンスの中に基底のインスタンスに相当する部分が含まれているのでは?
0192デフォルトの名無しさん
2013/05/16(木) 12:40:31.090193デフォルトの名無しさん
2013/05/16(木) 12:46:03.41基底は1つになる方法はない?
0194デフォルトの名無しさん
2013/05/16(木) 12:48:54.89クラスTのインスタンス -> T型の変数 と言い換えとけ
0195デフォルトの名無しさん
2013/05/16(木) 13:19:11.46継承を使わずに基底にあたる型をshared_ptrとかでメンバに持つクラスにしろ
0196デフォルトの名無しさん
2013/05/16(木) 13:25:38.02virtual継承
0197デフォルトの名無しさん
2013/05/16(木) 13:38:48.28is-aとhas-aの違いはわかる?
0198デフォルトの名無しさん
2013/05/16(木) 15:53:31.31学生を増やしても人のインスタンスが一つになっている状況とは如何に
あれか、学生数の水増しかw
0199デフォルトの名無しさん
2013/05/16(木) 16:17:39.820200デフォルトの名無しさん
2013/05/16(木) 17:01:59.23派生を使わない。
基本クラスに持たせようとしていた情報は
グローバル変数で持つ。
派生クラスに持たせようとしていた情報は単独の
クラスにして
みんなでグローバル変数をみる
0201デフォルトの名無しさん
2013/05/16(木) 17:04:43.82コンポジションを使うとか
どうしても継承が必要なのか、継承を使わなくてもいいのかはよく検討すべき
0202デフォルトの名無しさん
2013/05/16(木) 18:30:51.59グローバル変数にしようぜ
0203デフォルトの名無しさん
2013/05/17(金) 01:01:04.772.char* const b //bがconst
3.char const* c //1.と同じ?2.と同じ?
4.const char& d //dがconst?
5.char& const e //どこがconst?
6.char const& f //ドカーン!
constが分からんとですorz
0204デフォルトの名無しさん
2013/05/17(金) 01:02:41.45何故自分で試そうとしないのですか?
0205デフォルトの名無しさん
2013/05/17(金) 01:11:23.80これ見てわからなかったらもう来るなよミジンコ
http://ideone.com/ViHQJy
0206デフォルトの名無しさん
2013/05/17(金) 01:41:05.070207デフォルトの名無しさん
2013/05/17(金) 01:47:27.57とりあえずconstは(変数ではなく)型に付くと覚えましょう
1.const char* a //const char型へのポインタ(型)(の変数)a
2.char* const b //char型へのconstポインタ(型)(の変数)b
3.char const* c //1.と同じ
4.const char& d //const char型への参照(型)(の変数)d (※)
(※この形を『const参照』と呼びますがconst型への参照(型)の意味であって、型へのconst参照(型)の意味ではありません)
5.char& const e //エラー
6.char const& f //4.と同じ
0208デフォルトの名無しさん
2013/05/17(金) 02:03:39.740209KUSO KOTE
2013/05/17(金) 02:15:00.69というおUNKOな本があって、
型宣言の説明だけは素晴らしかった。
その読解法によると
const char* a
a is a pointer to "const char"
char* const b
b is a const pointer to char
char const* c
c is a pointer to const char (=a)
const char& d
d is a reference to "const char"
char& const e
e is a const reference to char→エラー
char const& f
f is a reference to const char
0210デフォルトの名無しさん
2013/05/17(金) 07:20:10.831, 4 は例外的だし意味もあいまいだから「使わない」
0211デフォルトの名無しさん
2013/05/17(金) 07:40:06.86それぞれ3と6を使うってこと? それならむしろ自分は逆だなあ。
0212デフォルトの名無しさん
2013/05/17(金) 08:52:28.92char* const a は const a だから、a がコンスト
って考えると、3, 6は確かに自然な気がする
でも、char const& a は const &a だから、&aがコンストかっていうと
何それイミフw
って考えると、全然自然じゃない気もする。
0213デフォルトの名無しさん
2013/05/17(金) 09:12:40.30・左側で一番近い
・型に付いて
修飾するというのが基本ルール
>>203の1,4はその基本ルールでは解釈できず>>208,210のいうように例外的に解釈しなければならないから不自然
>>212はconstが右側の、型ではない*aやaや&aに付いてる、という解釈の時点で最初から二重に間違ってる
0214デフォルトの名無しさん
2013/05/17(金) 10:15:43.42自分は1,4を使う派だけど、constをどちらの目的で使うかによって、
型名とconstの位置が逆になるので、パッと見て分かりやすいかなー?と思っている。
0215デフォルトの名無しさん
2013/05/17(金) 10:49:49.41なるほど、てことは const の左側に「が」を補って
char const* は char が const
char* const は char* が const
char const& は char が const
char& const は char& が constはイミフだからエラー
って考えると自然?
0216デフォルトの名無しさん
2013/05/17(金) 12:03:02.390217デフォルトの名無しさん
2013/05/17(金) 12:43:38.38const初見の人でも受け入れやすい形だから便宜的に導入された記法なのかな
int a; // int
static int a; // なにかついてるけどint
extern int a; // なにかついてるけどint
const int a; // なにかついてるけどint
int const a; // なにかついてるけどconst、・・・?
0218デフォルトの名無しさん
2013/05/17(金) 12:46:15.89規格の該当個所はよ
0219KUSO KOTE
2013/05/17(金) 15:03:07.06記憶域指定子は別に左でなくても良いのだけれど
http://ideone.com/k9Lxqm
0220KUSO KOTE
2013/05/17(金) 15:12:14.57http://ideone.com/PAlXVV
0221デフォルトの名無しさん
2013/05/17(金) 15:19:59.33stringを取得する関数ってこれみたいに参照渡ししてることが多いけど、stringをreturnで返したら駄目なの?
0223デフォルトの名無しさん
2013/05/17(金) 15:47:36.06マイクロソフトは昔から関数を
inに対してoutを与えるものでなく
「正否のステータスを返せるサブルーチン」
ととらえているところがある。
だから戻り値は参照渡しで受け取る
0224デフォルトの名無しさん
2013/05/17(金) 15:50:21.95C++の.NET拡張はスレ違い
0225デフォルトの名無しさん
2013/05/17(金) 16:13:49.70221はただの例示で本題はstd::stringだからな?
0226デフォルトの名無しさん
2013/05/17(金) 16:22:45.99じゃないからねえ。
わざわざインスタンスを生成するより
使い回す方が自然。
0227デフォルトの名無しさん
2013/05/17(金) 19:52:53.57コンパイラはどのように構文解析して型を決めるんだ?
0228デフォルトの名無しさん
2013/05/17(金) 22:10:02.070229デフォルトの名無しさん
2013/05/17(金) 22:14:50.72別に左とか右とかそんなのどうでもいいんだよ
0230KUSO KOTE
2013/05/17(金) 22:20:16.281.明らかにシンボル名と思われる所を見つける
2-1.すぐ右に()があれば関数
2-2.すぐ右に[]があれば配列
2-3.すぐ左に&があれば参照
2-4.すぐ左に*または*constがあればポインターまたはconstなポインター
2-5.すぐ左に「型」または「型 const」または「const 型」があれば終わり
3.その 関数の戻り値/配列の要素/参照先/ポインターの差すものは…
→2-1に戻って解析を続ける
ただし途中に記憶指定子とか入るので適当にがんばる
0231デフォルトの名無しさん
2013/05/17(金) 22:29:30.640232デフォルトの名無しさん
2013/05/17(金) 22:58:32.42http://www.libjingu.jp/trans/bs_faq2-j.html#constplacement
0233デフォルトの名無しさん
2013/05/17(金) 23:02:15.590234デフォルトの名無しさん
2013/05/18(土) 00:27:47.88同様にC/C++の型表記も自然な表記って感じるのか
俺的には、配列は int arr[10]じゃなく int[10] arrがいいだろって
初めのころは思っていたからな。
0235デフォルトの名無しさん
2013/05/18(土) 00:38:49.32使う時の書き方に似せるという
方針だったはず。
だがC++で参照&が登場した際に一貫性を失った。
ハゲは臭いものにフタをするタイプだから
整合性を考えなくて困る。
0236KUSO KOTE
2013/05/18(土) 01:15:59.31宣言と使用の記述の統一ついては
ISO/IEC 9899:1990の時点で既に
宣言 void (*pf)() = f;
使用1 pf();
使用2 (********pf)();
とか怪しかったような。
0237デフォルトの名無しさん
2013/05/18(土) 01:31:31.65文法キモイ言語はポイしなさいポイ
0238デフォルトの名無しさん
2013/05/18(土) 08:04:30.10規格オタ隔離スレでも作ってそこでやれ
初心者スレなんだよここは
0239デフォルトの名無しさん
2013/05/18(土) 09:20:03.56いやそのりくつはおかしい
0240デフォルトの名無しさん
2013/05/18(土) 10:14:01.38ってよりは、
俺こんなに規格読み込んでるゼーっていう、
自己顕示欲旺盛な人たち同士の会話で、
初心者置いてけぼりなふいんきが
感じられる。
0241デフォルトの名無しさん
2013/05/18(土) 15:22:32.62C#で済むプログラムしか作らないなら黙ってC#使えばいいんだよ
お前がこのスレに居ることが全くの無駄
0242デフォルトの名無しさん
2013/05/18(土) 15:32:38.93この言い回しが勘違いも甚だしい。
「CはC#よりすごいんだ!」的な
自分の中で自分の価値を高めようと
必死なのがよくわかる。
0243デフォルトの名無しさん
2013/05/19(日) 00:45:26.820244デフォルトの名無しさん
2013/05/19(日) 00:52:59.09セキュリティの更新だけだと思ってるのか?
0245デフォルトの名無しさん
2013/05/19(日) 00:59:54.360246デフォルトの名無しさん
2013/05/19(日) 01:14:04.190247デフォルトの名無しさん
2013/05/19(日) 01:17:53.99アセンブラ直接弄ると、小数の丸め処理まで制御できるからな……
コンパイラがどこまで解釈できるかの勝負
0248デフォルトの名無しさん
2013/05/19(日) 01:41:00.42それでもC/C++に比べりゃゴミみたいなもんだよ
0249デフォルトの名無しさん
2013/05/19(日) 02:06:25.95手書きアセンブラと今時のC/C++コンパイラってどっちが速いか微妙じゃね?
0250デフォルトの名無しさん
2013/05/19(日) 02:11:20.47本来の使い方だからね。
0251デフォルトの名無しさん
2013/05/19(日) 02:17:33.530252デフォルトの名無しさん
2013/05/19(日) 05:05:15.33細かい動的メモリ確保が
壊滅的におそいじゃんC/C++は。
そういうのを自前でメモリ管理すると
圧倒的に速くはなるんだが
VM系のnewの代替としては限界がある。
■ このスレッドは過去ログ倉庫に格納されています