- 1 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:07:56 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/
- 2 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:08:45 ]
- sizeof(char)論争は隔離スレでやってくれ。
sizeof(char)が必ず1でも、省略すべきではない pc11.2ch.net/test/read.cgi/tech/1187521586/
- 3 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:20:52 ]
- わざわざスレ立てるなんてアホじゃねw
- 4 名前:前スレ980 mailto:sage [2007/08/19(日) 23:22:39 ]
- >>前スレ983
フォロー thx MSDNもあわせて読んでみた。 デバッグのmallocで余分に取られる領域を、デバッグのためというか その一部をちゃんとオーバーフローに備えた領域として確保して かつオーバーフローを検出してる、と。 だから、極端にオーバーフローしなければ、 デバッグ情報含めて正常に(?ん〜、落ちずに?)動作する、ということか。 980で書いた「食いつぶして」って言うのは、表現おかしいな。
- 5 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 00:18:08 ]
- たとえば、
mallocが隙間なくメモリを割り当ててくると仮定すると、 char* s="ABCD" ; for(int i = 0 ; i < 3 ; ++i ) { p[i] = (char*)malloc(strlen(s)) ; strcpy(p[i], s) ; } printf("%s", p[0]) ; の結果は、 ABCDABCDABCD になる。 とてつもなく長い文字列ができあがってしまい、 ヒープの残り容量よりも大きくなり、新たにヒープをこさえることになる。
- 6 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 01:31:04 ]
- >>5
わけわかんねぇソースと理屈をたれんな
- 7 名前:デフォルトの名無しさん [2007/08/23(木) 20:41:03 ]
- 一言だけ言わせてください。TCHARなんて使ってるCプログラマはいません!
- 8 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 20:45:32 ]
- 使ってるよ。
お前がプログラマじゃないだけ
- 9 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 21:12:58 ]
- >>7
Windowsは変なTypedefつかうくらいならTCHARでポインタ宣言したりしたほうがわかりやすいと思う。 LPCTSTRとかねぇ、もーわけわからん。
- 10 名前:デフォルトの名無しさん [2007/08/23(木) 23:18:15 ]
- 教えて君ですみません。
これから、WindowsのAPIのプログラミングを勉強しようと思っているのですが、 お勧め(必須)の書籍はありますでしょうか? 言語はC言語は多少つかえます。apiでのプログラミングに興味があります。 スレ違いかもしれませんが、ご存じでしたら教えてください。
- 11 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 23:21:30 ]
- 悪いことは言わん。
諦めた方がいい。
- 12 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 23:27:12 ]
- >>10
推薦図書/必読書のためのスレッド 36 ttp://pc11.2ch.net/test/read.cgi/tech/1187699049/
- 13 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 23:28:39 ]
- >>10
マルチ乙
- 14 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 23:29:04 ]
- 猫でもわかるWin32API
- 15 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 00:05:12 ]
- >>10
ぐぐるさん
- 16 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 00:06:07 ]
- >>10
C++/CLIに移行するとか。
- 17 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:34:20 ]
- >>9
LPCTSTRって、const TCHAR * じゃんか。
- 18 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:44:04 ]
- だからそう書いてんじゃねぇか
- 19 名前:ポポ [2007/08/24(金) 02:05:47 ]
- プログラミングの問題なのですが
「n個のランダムデータを大きい順に並べるプログラムを作れ」 という問題がどうしても解けません。 誰か回答お願いします。
- 20 名前:宿題は宿題スレへ mailto:sage [2007/08/24(金) 02:09:22 ]
- >>19
いやです。
- 21 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 02:10:34 ]
- >>19
どうしても解けないんじゃないだろ 勉強サボってるから解けないんだろ
- 22 名前:883 mailto:sage [2007/08/24(金) 19:43:59 ]
- どうしても解けないと分かっているならそれで良いじゃないか。
- 23 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 19:47:45 ]
- あんた誰
- 24 名前:デフォルトの名無しさん [2007/08/25(土) 15:00:06 ]
- void func03()
{ const size_t n = 10; const int maxrand = 100; srand(time(NULL)); int* pia; pia = new int[n]; printf("input:"); for(int i = 0; i < n; i++) { pia[i] = rand()%maxrand; printf("%d:[%d] ", i, pia[i]); } printf("\n"); qsort(pia, n, sizeof(int), func_big); printf("output:"); for(int i = 0; i < n; i++) { printf("%d:[%d] ", i, pia[i]); } printf("\n"); delete[] pia; return; } 改行が多すぎて書き込めないんで比較関数は自分で考えてくれ
- 25 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 15:45:15 ]
- かわいそうに。すでに解決済みだというのに・・・
- 26 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 15:53:04 ]
- マルチってひどいな
しかも他所で解決した旨を書かない ほんと最低だわ
- 27 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 16:18:03 ]
- 自分一人くらいプールの中で小便したって、水はさほど汚れないだろう
そういう考え方の人間がいるんですよ。ばっちいばっちい。
- 28 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 18:21:28 ]
- #include <pstade/vodka/drink.hpp>
#include <ctime> #include <vector> #include <boost/random.hpp> #include <pstade/oven.hpp> template <typename T> boost::mt19937 make_mt19937(T seed) { return boost::mt19937( static_cast<unsigned long>(seed)); } template <typename T> boost::uniform_smallint<> make_uniform_smallint(T min, T max) { return boost::uniform_smallint<T>(min,max); } template <typename gen_t, typename dst_t> boost::variate_generator<gen_t, dst_t> make_variate_gen(const gen_t& gen, const dst_t& dst) { return boost::variate_generator<gen_t, dst_t>(gen, dst); } int main(int argc, char* argv[]) { namespace oven = pstade::oven; const int RND_MIN = 0, RND_MAX = 100, NUM = 10; std::vector<int> v(NUM); oven::generate(v, make_variate_gen( make_mt19937(std::time(0)), make_uniform_smallint(RND_MIN, RND_MAX) ) ); std::cout << "source:" << '\n'; PSTADE_OVEN_FOREACH (i, v) std::cout << '\t' << i << '\n'; std::cout << "sorted:" << '\n'; PSTADE_OVEN_FOREACH ( i, v | oven::sorted ) std::cout << '\t' << i << '\n'; } 人様のライブラリに頼ると楽になるわぁ
- 29 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 18:26:39 ]
- 俺ならstd::vectorではなくstd::setを使う。
intなら比較関数オブジェクトを与える必要もなく、 rendからイテレータで舐めることで、ソート順をひっくり返す。
- 30 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:20:53 ]
- うへぇ、確かにこの場合はそっちの方が楽そうだ
- 31 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 21:24:29 ]
- rendではなくrbegin()な。
- 32 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 01:53:30 ]
- これができたらC++について基本は押さえてるという基準になる課題とかないですかね?
- 33 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 02:46:12 ]
- >>32
「Exceptional C++」という本の47の問題に適切な回答ができたら ってのはどうよ。
- 34 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 04:32:11 ]
- いやです。
- 35 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 09:35:37 ]
- >>33
ありがとうございます。 その本チェックしてみますね。
- 36 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 18:20:18 ]
- template <class T> void Show( T &data )
{ std::cout << data << std::endl; } この関数に引数としてunsigned charを入れると 文字として出力されてしまうのですが なんとか数値として出力できないでしょうか? int や doubleもこの関数を使うので表示するときにキャストは使えません。 ちなみにほんとの関数では配列をぶち込むので 関数に渡すときにキャストしたりもできません。
- 37 名前:デフォルトの名無しさん [2007/08/31(金) 19:48:05 ]
- >>36
呼ぶときにキャストしたら?
- 38 名前:36 mailto:sage [2007/08/31(金) 19:56:31 ]
- すまん。最後まで読む前に書いてしまった。
これでどうでしょう? #include <iostream> template <class T> void Show( T &data ) { std::cout << data << std::endl; } template <> void Show( unsigned char &data ) { std::cout << static_cast<int>(data) << std::endl; } int main(){ unsigned char a='a'; int b=3; double c= 3.1; Show(a); Show(b); Show(c); }
- 39 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 20:07:29 ]
- 自己レスかよ
- 40 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 22:07:04 ]
- 以下のコード、VC++6.0では通るのにVC++2005では
error C2597: 静的でないメンバ 'TTest::axx' への参照が正しくありません。 というエラーが出てしまいます。なぜでしょうか?お助けあれ struct TTest { int axx; }; strict TParamItem { int TTest::* p; int x; }; class T2 : public TTest { public: static const TParamItem KParamTable[]; }; const TParamItem T2::KParamTable[] = { { &axx, 10 } }; int _tmain(int argc, _TCHAR* argv[]) { T2 t1; t1.axx = 150; printf("%d %s\n", t1.*(KParamTable[0].p), "test"); return 0; }
- 41 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 22:18:26 ]
- >>40
&TTest::axxと書けばいいはず。 VC++ 2005では規格への準拠度が上がって、 メンバへのポインタの取得に標準から外れる書き方を認めなくなった。
- 42 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 00:07:59 ]
- >>41
できました…本当にありがとう!
- 43 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:07:46 ]
- え?
staticなメンバ関数から、staticではないメンバ変数にアクセスすんな! ってことでしょう。
- 44 名前:デフォルトの名無しさん [2007/09/01(土) 01:51:15 ]
- あるプログラムの実行処理を速くしたいとき、どのようなことに
気をつけてコーディングすべきでしょうか? アルゴリズム?メモリ管理?。 非常にアバウトな質問ですが教えていただけたらと思います。 みなさんはどのように意識して処理速度パフォーマンスを 向上されているのでしょうか。 もしも何か参考図書があったら教えてください。 Efficient C++を読みましたが、クラスの生成に気をつけることが 重点的に書かれていたような気がしました。
- 45 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:54:20 ]
- 気がしました。
- 46 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:55:49 ]
- >>44
先ずは、動作の安定したしっかりしたプログラムを作ること。 勿論それは、速度向上のために今後修正されるのだからそれを考慮して読みやすく誤解の少ないものであるべき。 後は、適当なリビジョン管理ツールと速度評価ツールを用意し、格闘するだけだな。
- 47 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:57:38 ]
- と書かれていたような気がしました。
- 48 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:38:14 ]
- >>44
すでにあるプログラムの速度を改善したいのか それとも これから書くプログラムを速くしたいのか 速くしたいのはどれくらいか、 数割なのか、それとも桁違いなのか それによって答えは違ってくるよ。
- 49 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:42:29 ]
- と書かれていたような気がしました。
- 50 名前:44 [2007/09/01(土) 09:52:47 ]
- みなさんおはようございます。
すでにあるプログラムの速度を改善したいと思っております。 速くしたいのはどれだけ、というのは難しくとにかくできるだけ 処理時間を短くしたいと思います。 そのようなコーディングの”コツ”を未熟ながらわかっておりません。 ですので、相談させていただきました。
- 51 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 09:58:26 ]
- まずはプロファイラで何回も実行される部分を見付ける。
そこが最も実行時間上ネックになっているところだから、 そこを重点的に高速化する。80:20の法則。
- 52 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:23:55 ]
- >>51
最初は、実行回数よりも、実行時間の合計が大きな関数を見つけるほうがいいと思う。 ミクロな最適化して速度を稼ぐのは、後からでもいい。
- 53 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:33:26 ]
- >>52
うるせーバ〜カ
- 54 名前:48 mailto:sage [2007/09/01(土) 10:40:57 ]
- >>50
> 速くしたいのはどれだけ、というのは難しくとにかくできるだけ 達成すべき目標が与えられていないのなら、現状を目標にしてしまえ。 何もしなくても目標達成だ。おめでとう。 「とにかくできるだけ」つまり速度無限大が目標なら、 それを実現するためのコストも無限大が必要だ。 ということは、 自分でやらないで金を出してプロを雇ったほうがいい。 まぁいいや、桁違いに速くしたい、ということだと解釈しよう。 処理時間の大半を占めている部分について、 データ量Nに対して処理のオーダーがNのX乗になっている部分を探し、 よりオーダーの小さいアルゴリズムに変更する。 下手なプログラムなら、これで桁違いに速くなる。
- 55 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:41:52 ]
- >>53
心が寂しいんだね。同情するよ。
- 56 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:53:11 ]
- >>55
同情するな金をくれ!
- 57 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:56:55 ]
- >>56
同情ってことは、俺も心が寂しいってことだ。 だから金はやれない。 あの安達祐実のセリフは日本語として間違っている。 「同情するなら〜」ではなく、「哀れむなら〜」のほうが意味としては適切かと。インパクトないけどね。
- 58 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 11:06:12 ]
- もう少し日本語を勉強したほうが良いと思うよ・・・
- 59 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 17:44:33 ]
- gcc -O2 hoge.c
- 60 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 11:33:14 ]
- まあ、この書き込みもみたくねぇって言われるのは承知の上で、
なんでここ、IDでないの? こんなウザイ書き込みIDNGワードにしてしまいたい。
- 61 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 11:39:07 ]
- >>60
死ね
- 62 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:00:16 ]
- たった一言で誰だか分かってしまうこのクォリティw
- 63 名前:44 [2007/09/04(火) 00:45:27 ]
- 返事がすごく遅れて申し訳ありません。アドバイスありがとうございます。
>データ量Nに対して処理のオーダーがNのX乗になっている部分を探し、 >よりオーダーの小さいアルゴリズムに変更する。 オーダーがNのX乗になる部分の探し方がわからないです。 まずはぐぐってみます。 そして、実行時間、実行回数が多い関数を探し出し(プロファイル使用。 使用したことはないのですが・・・)、その部分のより適した 計算方法を検討することを行ってみます。 大体このような流れでみなさんも処理時間の短縮を図っているのでしょうか?
- 64 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 00:56:30 ]
- わかりやすいボトルネックは二重ループしてるところとかかな。
でもループ内から呼び出した関数の中で別のループをしてるような一見わかりにくいものもある。 ま、プロファイラを使えば簡単に見つかるだろうけど。
- 65 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 03:04:58 ]
- >>63
> オーダーがNのX乗になる部分の探し方がわからないです。 データ量Nを10倍にしてみて、実行時間が100倍になれば2乗、1000倍になれば3乗。
- 66 名前:65 mailto:sage [2007/09/04(火) 03:08:06 ]
- 言葉が足りなかったかも。
プログラムを見て探すのではなく、 実際にプログラムを走らせてみて、 実行時間の変化を見るのです。 10倍だと極端かもしれません。 2倍とか3倍とか適当に試して。
- 67 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 05:00:10 ]
- C++の演算子の
.* ->* は、どういう時に、どのように使うものなのですか?
- 68 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 05:18:11 ]
- (構造体).(構造体のメンバ)
(構造体へのポインタ)->(構造体のメンバ)
- 69 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 07:47:22 ]
- メンバポインタのようにも見える
→ *
- 70 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 12:43:16 ]
- メンバポインタだな
X x, *p; int X::*m; というのがあったとき、 x.*m = 1; p->*m = 2; このように使う
- 71 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:53:45 ]
- クラスのメンバに、
自分自身を破棄してメモリを解放する関数って作れるのでしょうか? 例えばこんな感じです。 void destroy(){ DELETE(this);//インスタンスを破棄してメモリ解放する関数 }
- 72 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:56:10 ]
- そうすると静的に作ったインスタンスの扱いはどうなるの?
インスタンスが有効かどうかを保持するフラグをメンバ変数に持たせておく、 ぐらいの解決方法が一番な気がする。
- 73 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:56:36 ]
- delete this;
当然newしたものである必要がある。
- 74 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:08:48 ]
- newで作ってないインスタンスはdeleteで消せないんですね。
Javaしかやったことがないので、メモリ解放がイマイチ馴染まず、 できるだけ意識せず簡単に消せる作りにしたいんです。 メソッドのスコープ抜けたり、参照外れたりしたら、 勝手に解放されるとかいう風に作るのは無理でしょうか。
- 75 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:15:31 ]
- つ[スマートポインタ]
- 76 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:22:07 ]
- >>74
そもそもnewする必要がないものをわざわざnewして作ることもないと思うが。
- 77 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:23:59 ]
- >>75
stdっていうのが無いので使えませんたぶん… >>76 もしかしてnewで作らなければ、メソッドのスコープ抜けたとき勝手に破棄されるんでしょうか。
- 78 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:25:26 ]
- >>77
される(それはJavaと同じ)。 てか、まずは試してみたらどうだろう?
- 79 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:27:27 ]
- スタックとヒープの区別すらついていないとは…まるで知性を感じませんよ
newで作ったやつ…関数抜けても消えない。ヒープに取るから ローカル変数…関数抜けたら消える。以降は使用不可
- 80 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:33:04 ]
- スタックとヒープなんとなく違いが分かりました。
確かに知識不足ですね。まだ始めたばかりなんで勉強してみます。
- 81 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 07:06:58 ]
- >>77
ないならば、用意すればいい。 テンプレートが使えるコンパイラなら、 boost::scoped_ptrやboost::shared_ptrが使える。 もちろん外部のライブラリ使用禁止なら、 適当に名前空間を変えて自己責任で使えばいい。 そんなに複雑なものでもないし。
- 82 名前:67 mailto:sage [2007/09/05(水) 08:31:06 ]
- >>69-70
ありがとうございます。 これはエグい機能ですね。 どうりで今まで使いみちが理解できなかったわけです。 これを使うべき場面というのはあるのでしょうか。
- 83 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 09:11:26 ]
- >>71
C++に不慣れなうちは、delete this するようなクラスを作るのは、やめたほうがいいと思う。 なぜなら、delete this は、どうしてもそれが必要な特別な場合だけに限定すべきだから。 どうして、自分自身を破棄するようなメンバ関数が必要なの? もっと適切で良い方法を教えられるかも。
- 84 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 10:45:08 ]
- >>82
メンバ関数ポインタ でぐぐると使用例がいくつかヒットするかもしれない。 まぁでも滅多に使うもんじゃない。
- 85 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 11:21:37 ]
- 直接メンバへのポインタには触れないけど、
mem_fun(やboost::bind)の中で使っているんだろうなとは思う。
- 86 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 22:29:14 ]
- >>83はもしかしからデストラクタを呼びたいのかも。
- 87 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 22:30:20 ]
- >>83じゃねえや>>71だな。
- 88 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 13:10:16 ]
- 関数の引数で、
読み取りのみで変更を行わないものは、 void hoge(const Type& o) ; void hoge(const Type* p) ; どう使い分けるべきなのでしょうか。
- 89 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 13:19:56 ]
- 常に前者。
ただし、配列の要素を指すポインタを受け取るのであれば、 要素数を示す引数を追加した上で、ポインタを使う。 しかし、イテレータで済むならそっちを使う。
- 90 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 15:59:14 ]
- なぜポインタではなく参照を使うのでしょうか。
- 91 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 16:04:27 ]
- void hoge(const Type& o) ;
だったら引数にNULLを設定した場合、コンパイル時にエラーが分かるから。 ついでに void hoge(const Type* o) ; だと常にNULLチェックが必要、そうしないと実行時にどんなエラーが起こるやら。 ちなみにNULLがありえる場合は後者を使う。 ちなみに、ここでいうNULLとは Type* p = NULL; hoge(p); のことではなく hoge(NULL); のことですぅ。念のため補足
- 92 名前:デフォルトの名無しさん [2007/09/08(土) 16:58:52 ]
- C++で色々なプログラムを作りそのときの考え方を示し
実際にどのようにして作るのか解説してくれる本はありませんか?
- 93 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 17:25:48 ]
- 88です。
ポインタの安全ではない部分を解決するために、C++で参照が導入されたのだから、 参照を使ったほうがいい、ということですね。
- 94 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 00:30:37 ]
- >>91
NULLで参照がエラーになるのはNULLだからじゃなくて型が違うからだろ。
- 95 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:14:54 ]
- >>94
>>91はそういう話をしている。何も間違ってない。
- 96 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:46:04 ]
- >>95
>>91の書き方はからは読み取れない。 補足も意味不明。
- 97 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:51:34 ]
- 日本語でおk
- 98 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:55:28 ]
- >>97
日本語じゃなくてC++が分かってないんだろ。
- 99 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 02:00:32 ]
- 何や此奴俺初めて書き込んだのに
- 100 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 02:03:39 ]
- 91の言いたいことはわかるが、
説明がいまいちだったな。
|

|