- 1 名前:デフォルトの名無しさん [2006/08/22(火) 09:21:31 ]
- はきだめのスレへようこそ
ここは、C/C++に挫折し、それにもかかわらず、C/C++やらなければならない者達がたむろするスレです。 なお、質問する人は回答はあまり期待しないでください。 前スレ:はきだめC/C++下級者の質問箱 pc8.2ch.net/test/read.cgi/tech/1124256027/
- 404 名前:デフォルトの名無しさん [2007/04/13(金) 09:12:41 ]
- nullと0の違いを教えてください
- 405 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:21:57 ]
- 0はただのゼロだが、nullは「意味を持たない」という文脈で使われ、
その実体は必ずしもゼロではない 例えば大抵の処理系では int *p=null; と int *q=0; は等価だが、 場合によっては q はメモリの「ゼロ番地」を指しており、 実際に読み取ることができる、ということもありうる
- 406 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:33:16 ]
- とすると、大抵の処理系では、0番地とヌルポはどのようにして見分けているのですか?
- 407 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:48:57 ]
- >>404
CにもC++にもnullなんてものはない。 NULLのことなら、NULLが0なんじゃない。0がNULLなんだ。
- 408 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:13:41 ]
- >>405
いくら「はきだめ」でも、嘘はいくない。
- 409 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:58:09 ]
- >>404
C言語の定義によればどんなポインターの型にも特別な値、 すなわち 「ヌルポインター」が存在する。このヌルポインターは 他のどんなポ インターの値とも区別可能で、「いかなるオブジェクトや 関数へのポ インターと比較しても等しくなることがないことを 保証されている」。 すなわちアドレス演算子&を適用した結果が ヌルポインターとなることもない。 C言語の定義によれば、ポインターを書くべきところに現れた定数0は、 コンパイル時にヌルポインターに変換される。すなわち初期化・代入・ 比較をするときに左辺/右辺のどちらかにポインター型の変数か式が 現れたときは、コンパイラはもう一方の側の定数0がヌルポインター を要求していることを理解し、適切なデータ型のヌルポインターの値 を産み出す。
- 410 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:12:14 ]
- C++Q&Aの2.24に
class Vehicle{ public: virtual void startEngine()=0; vietual ~Vehicle(); }; Vehicle::~Vehicle(){} 「そこから導出される派生クラスではstartEngine()メンバ関数を提供してはいけない。」 とあるんですが、これは使うなって事ですか? 「提供してはいけない」っていう言葉の趣旨がわからんのですが。
- 411 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:15:40 ]
- 多分
s/しては/しなくては/ ではないかと。
- 412 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:41:27 ]
- ですよね。
定義しないとエラーになるんで、これは一体・・・と思ってた所です。 訳者が監修扱いになってるんで、誤訳かなぁと思ってた所です。
- 413 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:45:54 ]
- デストラクタをvirtualにしないと駄目な理由がいまいちわかりません。
- 414 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:49:42 ]
- >>413
struct Base { // virtual ~Base() {} }; struct Derived : Base { Derived() : p(malloc(100)) {} ~Derived() { free(p); } private: void* p; }; { Base* x = new Derived; delete x; }
- 415 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:06:15 ]
- そこでshared_ptrですよ、と惑わしてみる
- 416 名前:デフォルトの名無しさん [2007/04/15(日) 08:19:41 ]
- 動的束縛(アップキャスト)を使った状態でのdeleteが駄目って事ですか?
- 417 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:42:37 ]
- float x=0.1;
exp(0.1*x)だとfloatなのにpow(0.1*x,2)だとdoubleになってしまうのは何故なのでしょうか? pow(float(0.1*x),2)とすれば、floatになってくれるのですが、expとpowで何が違うのでしょうか?
- 418 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:49:12 ]
- んなこたーない。
つーか、何を根拠にfloatだのdoubleだの言ってるんだ?
- 419 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:40:47 ]
- まずCかC++かはっきりさせろ
- 420 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 16:48:26 ]
- C++です。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 17:25:36 ]
- で、根拠は?
- 422 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 17:33:13 ]
- cmathを使っている
- 423 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 18:57:11 ]
- ダメだこりゃ。
- 424 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 19:14:06 ]
- math.hを使え
- 425 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 20:25:31 ]
- なんでやねん。
- 426 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 21:33:50 ]
- >>417
0.1 * xは、0.1がdouble型だからxもdouble型へ昇格され、全体としてもdouble型になる。 expもpowもdouble型の引数を取るものが呼ばれるはず。 そうでないならコンパイラがおかしいはず。 そもそも418も指摘しているとおりで、417自身がどうやって調べたのかも怪しいが。 ついでにいくつか言うが、float型リテラルを作るには0.1fのようにfを後置しろ。 そんな関数スタイルのキャストでも(勿論Cスタイルのも)使うな。 ここではstatic_castを使え(Boostのimplicit_castもありだ)。
- 427 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:06:00 ]
- #include <windows.h>
#include <stdio.h> void main() { double a; a = 2/6; printf("%f\n", a); } VC6にて上のように単純に2÷6を計算したら0が出力されます。 0.33333・・・を出したいのですがどうすればいいのでしょうか?
- 428 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:48:59 ]
- >>427
a = 2.0 / 6.0;
- 429 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:54:24 ]
- >>428
ありがとー
- 430 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 20:52:34 ]
- 共用体が有効なときってあるの?
活用方法が見出せない。
- 431 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:11:20 ]
- >>430
確かに。職業PGだが、BigEndianとLittleEndianが混在した状況で 共用体が必要な場面は少ないと思う。実際使わないし。 組み込み系ならBEかLEかははっきりしているので union X { long a; char b[sizeof(long)]; }; とかやることがあるかも。
- 432 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 23:37:36 ]
- 領域をケチりたい場合にはよく使ったが、
最近はメモリに気を使う必要性が減ったから、 わざわざそういうことはしなくなったな。
- 433 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 01:02:36 ]
- union REGS は昔良く使われてたな。
今は struct sockaddr 関係で使われてたような。 sin_addrが内部の何かのdefineだった気がする。実装依存だろうけど。
- 434 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 11:00:22 ]
- >>430
であれば、使わなければよい。 実例としては、例えば「ICMPヘッダ union」でググるよろし。
- 435 名前:デフォルトの名無しさん [2007/04/21(土) 18:03:25 ]
- freeにNULLを渡した場合の挙動は仕様として決まっていますか?
また、一般的な処理系ではどうなっているでしょうか。
- 436 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:24:28 ]
- >435
標準CではfreeにNULLを渡したときは何もしない(だから渡してもよい) ことが保証されている。
- 437 名前:デフォルトの名無しさん [2007/04/30(月) 09:05:06 ]
- 32bit Windowsと64bit Windows両方で共通のコードを書きたいのですが、
int、doubleなど同じ変数型でも変数の桁数、精度がそれぞれで違うと思いますが、 これらの違いの一覧はどこかで公開されているのでしょうか? これらはOS依存なのでしょうか?それともコンパイラ依存なのでしょうか?
- 438 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:41:58 ]
- VC++なら、
たぶん求めてるのはこの中から見つけ出せると思う。 ttp://msdn2.microsoft.com/ja-jp/library/02c56cw3(VS.80).aspx
- 439 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 10:49:34 ]
- intってコンピュータが64bitなら64bitになるというものじゃないのですか?
- 440 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 11:00:43 ]
- IP64,LP64,LLP64とかでググレ
- 441 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:20:50 ]
- if文の条件としてキーボードでaが入力されたら〜ということを表したいのですが、
char c; if((c=getchar())==a) と言ったものを考えたのですが、 char c; if((c=getchar())=='a') に直すべきでしょうか。 非常に稚拙な質問ですが、よくわからないので助けてください。
- 442 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:26:29 ]
- >>441
正しくコンパイルできて動くほうを選べ。
- 443 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 17:07:24 ]
- >>442
ごめんなさい、今出先なのでコンパイルできる環境がないもので・・・。 どうか教えていただけませんか。
- 444 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 17:12:29 ]
- >>443
教えるも何も >>441 からでは判別不能。エスパーの召喚が必要だ。 コンパイルできない環境で知る必要も無いだろう。帰ってからゆっくり試せ。
- 445 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 19:00:38 ]
- >441
前者は、入力した文字を 変数 a の内容と比較している。 後者は、入力した文字が a という文字かどうかを判定している。 さあ、選べ。
- 446 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 01:23:21 ]
- >>445
トークンa 'a'という整数
- 447 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 07:40:59 ]
- >441
ついでにgetchar()の戻り値、文字リテラルの型はintだからchar c;ではなくint c; とすべき
- 448 名前:447 mailto:sage [2007/05/01(火) 07:42:04 ]
- >文字リテラルの型はint
Cの場合ね。
- 449 名前:デフォルトの名無しさん [2007/05/06(日) 19:11:31 ]
- 下記のファイルの3列目を読み込んで配列に格納したいです。
----- 1,2,3,4 5,6,7,8 9,8,7,6 5,4,3,2 ----- 数値はカンマで区切られています。 どうやったら a[0]=3, a[1]=7, a[2]=7, a[3]=3 というふうに格納できるでしょうか? a[0][2]=3, a[1][2]=7, a[2][2]=7, a[3][2]=3 でも構いません。よろしくお願いします。
- 450 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:12:13 ]
- 宿題は宿題スレへ
- 451 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:19:57 ]
- >>449
適当でいいのなら fgets で 3 列目まで読み込んでから sscanf(buf, "%d,%d,%d,%d", &a[0], &a[1], &a[2], &a[3]); みたいに。 真面目にやるなら strtok とか、コンマを strchr で探して切り捨てたりしてから、 atoi とか。
- 452 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:31:52 ]
- 一行読み込むごとに
sscanf(buf, "%d,%d,%d,%d", &dummy, &dummy, &a[i], &dummy); でいいじゃん
- 453 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:42:28 ]
- 普通に %*d つかえよw
- 454 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:45:02 ]
- あ、三列目ってそっちか。
- 455 名前:449 mailto:sage [2007/05/06(日) 20:47:58 ]
- >>451-454
とくに宿題ではないのでここに書かせてもらってます。 型は決まっているのでsscanfでできました。 ありがとうございました。
- 456 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:21:59 ]
- >>453
すっかり忘れてたわー
- 457 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:33:22 ]
- >>452
で、3カラム目だけ得る目的なのに4カラム目を空読みする理由は? #"%*d,%*d,%d"で充分。
- 458 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 17:30:42 ]
- >>457
上につられたってことにしといてください
- 459 名前:デフォルトの名無しさん [2007/05/07(月) 23:31:13 ]
- #include <stdio.h>
#define JIJYO(x) ((x)*(x)) main() { int i = 1; while(i <= 5) { printf("結果:%d\n", JIJYO(i++)); } } において、実行結果は1^2,3^2,5^2の順に表示されるのですが、 何故、1^2,2^2,3^2……とならずに、i++が2回ずつ呼びだされるのでしょうか?
- 460 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:42:30 ]
- 見え見えの落とし穴にはまるあなたは
きっと仲間内では天然キャラとして愛される存在なのでしょう
- 461 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:53:10 ]
- >>459
漏れも初心者なんで、あってるかどうかわからないけど。 #define JIJYO(x) ((x)*(x)) ((i++)*(i++)) に展開されるんじゃないかな。
- 462 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:56:59 ]
- マクロを教える時に必ず注意される所だと思うが。
- 463 名前:459 mailto:sage [2007/05/08(火) 02:02:18 ]
- >>461
なるほど……。 ありがとうございました。
- 464 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:38:07 ]
- C++について。
問題文: f(x)=x^3(xの3乗)のdf(x)/dxのプログラムをC++で作れ。 (1≦x≦2、xは0.01ずつ増加<x(i+1)=x(i)+0.01>、そのときのf(x)の値も用いる。) 5月14日までに考えて来い!との事なので・・・ どうかご教授願いたく存じますm(_ _;)m
- 465 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:56:57 ]
- >>464
for (int x=100;x<=200;x++) { cout<<(x/100.0)<<" "<<3*(x/100.0)*(x/100.0)<<"\n"; }
- 466 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:59:49 ]
- >>464
宿題スレとのマルチはお勧めしない。
- 467 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 15:44:46 ]
- さすが掃き溜め。
- 468 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:20:58 ]
- C++厨死ね
- 469 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:28:34 ]
- >>464
丸投げしといて、回答があれば丸写ししようなどと考えてる (らしい) 奴が >ご教授願いたく などとふざけた台詞を吐くお陰で、この単語に脊髄反射してしまう奴が 後を絶たないんじゃないかと思うようになって来た。
- 470 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 23:33:14 ]
- すいません・・・二重ポインタ**の意味がどうしてもわかりません・・・
多次元配列がどうのこうのって書いてあったけど・・・
- 471 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 00:30:42 ]
- >>470
ポインタのポインタで検索汁
- 472 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 00:45:13 ]
- ありがとうございました.二重ポインタで検索してました.
- 473 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 19:23:25 ]
- ぬるぽいんた
- 474 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 23:52:42 ]
- がっいんた
- 475 名前:デフォルトの名無しさん [2007/06/07(木) 11:04:30 ]
- ropeってどんな時に使うのですか?
いまいち利点が分からないのですが。
- 476 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 11:19:39 ]
- >>475
ttp://www.oopweb.com/CPP/Documents/STLGuide/Volume/Rope.html 個人的には、「非標準である」というデメリットしか思いつきません。
- 477 名前:デフォルトの名無しさん [2007/06/07(木) 12:04:02 ]
- gccで作成した静的ライブラリとg++で作成したオブジェクトファイルを
リンクさせようとすると undefined reference to **** のようになります。 ライブラリの方はgccでしかコンパイルがうまく通らないのですが、 今後作成するプログラムはC++で書くため、gccでコンパイルしたものと g++でコンパイルしたものをうまくリンクしたいのですが 何かよい解決策はないでしょうか?
- 478 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 12:17:22 ]
- >>477
「名前マングル」でググるよろし。 ライブラリのヘッダに手を入れていいなら プロトタイプ宣言の先頭に #ifdef __cplusplus extern "C" { #endif 最後に #ifdef __cplusplus } #endif を入れる。
- 479 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 13:12:38 ]
- while(1)
{ scanf("%d", &a); switch (a) { case 1: printf("a = 1\n"); break; case 3: printf("a = 3\n"); break; case 5: printf("a = 5\n"); break; default: printf("others\n"); break; } } これでgとか非数値を入力するとscanfが飛ばされて defaultの所が延々流れるのですが何故でしょうか?
- 480 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 13:20:52 ]
- 1. g の地点で scanf が失敗
2. a には何も入らないため、変数に最初に入ったゴミにより default が選択される 3. others と出力される 4. 1 に戻る この無限ループ
- 481 名前:477 mailto:sage [2007/06/07(木) 13:22:09 ]
- なるほど、うまくいきました。ありがとうございます。
- 482 名前:デフォルトの名無しさん [2007/06/07(木) 13:51:28 ]
- const int* p = new int[10];
delete[] p; これ、エラーも警告も何も出ないんですけど、 仕様上合法なんですか?
- 483 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 13:59:51 ]
- >>480
なるほど、文字入力を%dの10進数指定して読み込んだら ASCIIコードの値が格納されるかと勘違いしてました。 ていうか失敗の後再読み込みされずにgのゴミで処理されるって scanfの仕様どうなってるんだろうかと今さらながらググってみたら 一番最初に出てくる関数だから侮っていたら書いてあることが意外と難しくてビックリでしたorz
- 484 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:15:41 ]
- >>482
const int の配列を割り当てるのも、それを解放するのも 何の問題ありません。 でも p[0] = 0; なんてするとエラーになる罠。
- 485 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:26:43 ]
- メモリの破棄には const の力は及ばない・・・ということですか。
分かりました。
- 486 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:59:10 ]
- 破棄そのものは内容書き換えないからな
- 487 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 16:04:32 ]
- 理屈は分かるけど、それでいいんかいと思わなくはないなw
void foo(const int* p) { delete[] p; } を foo(p); って呼んで、 ああ、p は foo で何の影響も受けてないよねー、と思ったら、 delete[] されてた、なんつって。 まあ、const_cast という悪魔も確かにいるけどね。
- 488 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 17:36:12 ]
- そんな気持ち悪いことはしないでくださいとしかなあ。
- 489 名前:デフォルトの名無しさん [2007/07/06(金) 09:47:01 ]
- C言語で、文字列 str1 の先頭から1文字づつ取り出して
別の文字列 str2 に追記していく場合、 strncatを使用して strncat(str2,&str1[i],1); とするとstr2の内容が文字化けしてしまいます。 FedoraCore6なんですが、どうすればいいでしょうか?
- 490 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 09:48:11 ]
- 何を入れたらどう化けたんだよ
- 491 名前:デフォルトの名無しさん [2007/07/06(金) 10:01:41 ]
- >>490
(だとか)だとかを入力後、他の文字を追記するとstr2に文字化けが生じてしまいます
- 492 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 10:03:31 ]
- つまり、マルチバイト文字を入れたときに化けるんだな
化ける前と化けた文字を見れば一発でわかるが・・・ iはちゃんと1ずつ進めてんの?
- 493 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 10:05:06 ]
- マルチバイトはstrncpyの3番目が1の場合2回(UTF-8なら3回)実行しないとだめなのはわかってる?
- 494 名前:デフォルトの名無しさん [2007/07/06(金) 10:07:47 ]
- 半角(などを使用していたつもりだったので、
文字列内にマルチバイト文字は入っていないと思っていたのですが・・・・ sizeof("(")でもsizeof("1")でも同じ値がかえってきたのですが、"("もマルチバイトなんでしょうか? あらかじめstrlenで文字数を数えてからiを回しています。
- 495 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 10:08:40 ]
- (だとか)だとかを
「だとか」じゃなくて、"("、")"のほうかよw
- 496 名前:デフォルトの名無しさん [2007/07/06(金) 10:10:48 ]
- >>495
すみません、ちゃんと""つけておいたほうが良かったですね。
- 497 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 10:13:54 ]
- 文字化けを見てみないとわからんけど、\0終端して無いからゴミがくっついてるんじゃね
- 498 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 10:17:24 ]
- そういや、最初にstr2は0で初期化してる?
strcat は\0のとこに追加するんだぜ。
- 499 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 12:01:06 ]
- str(n)cat なんていう下衆なもんは使わないことをおすすめする。
- 500 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 12:18:09 ]
- >>498
してませんでした。 やってみます
- 501 名前:デフォルトの名無しさん [2007/07/10(火) 21:31:00 ]
- クラスにはセットとゲット以外に、
なるべくメンバ関数を作らないようにすべきですか? それとも、どんどん関数を含めても良いのでしょうか? 思想的な質問ですが…
- 502 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:33:03 ]
- アクセサ自体ベタベタ付ける物ではない
メンバ関数・変数ともにそのクラスを表現するのに必要なものだけで良い
- 503 名前:デフォルトの名無しさん [2007/07/10(火) 21:38:34 ]
- つまりメンバ関数にする意味があるもののみ含めるのが良いと、
そういうことで良いでしょうか。
- 504 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:59:27 ]
- それでおkかな。
OOには単一責任の原則と言う物があるから 基本的にクラスが持つ責任は一つだけ。 メンバ関数をその責任に応じたもののみを付けるのが良い。 無駄に責任を負うと初心者にありがちなblobアンチパターンになる。
|

|