C++相談室 part34
■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v
NGNGただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。
過去スレ、関連スレ、関連リンクなどは >>2-20 あたり
0075デフォルトの名無しさん
NGNG初期化の仕方がダサすぎ
0076デフォルトの名無しさん
NGNGRelease のスレッドセーフな実装でさんざん悩んでドツボにはまったことがある。
0077デフォルトの名無しさん
NGNG根性あるなら我慢して真剣にCを1ヵ月勉強しなさい。
それで身の振り方もわかるようになるだろう。
Cでやった事はJavaなりC++なりC#なりで必ず役に立つ。
それに1つの言語をマスターすれば他の言語を覚えるのに時間はかからない。
0078デフォルトの名無しさん
NGNGコピペニマジレスカコワ(ry
0079デフォルトの名無しさん
NGNG本当にありがとうございます。
実は10時間くらい調べて聞いたのですがまだ調べたりなかったようです。ペコ
77さん本当に参考になりましたっす。C言語の入門書慎重に選んで熟読しプログラミングは覚えるより慣れろ
らしいのでがんばってやっていきたいと思います。
0080デフォルトの名無しさん
NGNGBASICやアセンブラの場合は、他の言語覚えるのにまだまだ時間かかると思うけどな。
0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG日本語の勉強もしておけよ。
仕事でプログラミングをする積もりなら読解力と文章構成力が必要になるからな。
0083デフォルトの名無しさん
NGNGそうか?アセンブラ知っていればCは楽勝。とくにポインタでつまづくことがない。
0084デフォルトの名無しさん
NGNGそうかなぁぁぁぁ?
0085デフォルトの名無しさん
NGNGアセンブラ理解できるセンスがあればCは理解できそうな気がする。
C++はまた別のセンスが必要だけど。
0086デフォルトの名無しさん
NGNG勉強すりゃ誰でもできるわ。
0087デフォルトの名無しさん
NGNG困ったことに勉強しても出来ない奴はごまんといます。
0088デフォルトの名無しさん
NGNGセンスというか相性だね。C++やり始めたらあまりの難しさに根をあげてしまう香具師は
いくらでもいる。反対にそんなに難しく感じずあっさりと身につけてしまう香具師もいる。
>>86
考え方が甘い
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG君はどうも努力万能主義だね。君の考え方に従えば、100人いれば100人が
努力すれば全員東大に合格して、エリートコースを歩めるという風に読める。
で、君は無事に東大を卒業してエリートコースを歩いているかね?それとも
ただの妄想ですか?ププ
0092デフォルトの名無しさん
NGNGそんなに難しいことかい?
0093デフォルトの名無しさん
NGNG東大卒ですか?
0094デフォルトの名無しさん
NGNG努力すれば誰でも東大に受かるなんて風には、とても読めませんが。
0095デフォルトの名無しさん
NGNGF1は誰にでも乗りこなせるものじゃないが、運転免許程度なら取れん奴のほうが珍しいだろ。
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG同一人物ですか。東大とは拡大解釈しすぎかもしれんが、だからと言って君は
C++を舐めすぎ。エピステーメーみたいになれるんかよ?
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG妄想はお前の方。逃げるなよ。誰も脳無しのお前を責めたりしないから。
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG010494
NGNG0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG同一人物なのにそうでないと言い逃れするとはチキンな野郎だ。
嘘つきは相手をしても無駄なエネルギーを使うだけなので放置。
0107デフォルトの名無しさん
NGNG010894
NGNG0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNGどっちもバッファのオーバーラップが許されないとあるのですが、
だったらmoveの意義が無い気がするのですが。
0117デフォルトの名無しさん
NGNG氏ね。そうすれば悩まなくて済む。
0118デフォルトの名無しさん
NGNGお前自身が子供のようにな。
0119デフォルトの名無しさん
NGNGすいません、この人を引き取ってもらえませんか?
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG明らかにスレ違いだハゲ
0122デフォルトの名無しさん
NGNGmoveは重なってても大丈夫のはず。
何の記述を見たのですか?
0123デフォルトの名無しさん
NGNGCと日本語がんばります! ありがとうございました。
0124デフォルトの名無しさん
NGNGVC6に付いてるMSDNには許されないと書いてあるな。
0125デフォルトの名無しさん
NGNGオンライン版(英語)を見た。→ttp://msdn.microsoft.com/library/en-us/vclang98/html/STRING2_CHAR_TRAITSCCMOVE.asp
"The source and destination may overlap." と書いてある。
日本語訳が間違ってるのかな?
0126デフォルトの名無しさん
NGNGオーバーラップがないのが確実なら
オーバーラップが許されないほうを使うほうが速い。それだけ
0127デフォルトの名無しさん
NGNGなにいってんだ
0128126
NGNGなんか変だった
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcstdlib/html/vclrf_string_chartraitsmove.asp
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcstdlib/html/vclrf_string_chartraitscopy.asp
copyはsequences must not overlap
moveはpossibly overlapping sequence.
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG今はifstreamでファイルをオープンして最後までなめる処理を
してるんですがあまりにもナンセンスなんで・・・
string strLogFileName = "hogehoge.txt";
ifstream in;
in.open(strLogFileName.c_str(), ios::in);
if (in.is_open())
{
// サイズを見る
uint nCount = 0;
char c;
while (!in.eof())
{
in.get(c);
nCount++;
}
}
in.close();
cout << nCount << endl;
0133132
NGNG0134デフォルトの名無しさん
NGNGif (i.is_open()) {
i.unsetf(std::ios::skipws);
std::istreambuf_iterator<char> it(i);
size_t s = std::distance(it, std::istreambuf_iterator<char>());
}
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGで、普通はANSI標準じゃないけど
POSIX標準なstat/fstatを使うんじゃないかなあ。
0137デフォルトの名無しさん
NGNGC++の標準にファイルサイズという概念はない。環境依存。
0138デフォルトの名無しさん
NGNGfstreamではseekは推奨できないんじゃないか。
0139デフォルトの名無しさん
NGNGi.unsetf(std::ios::skipws);は必要無いんじゃないか?
0140デフォルトの名無しさん
NGNG概念は無くともファイルが存在すれば、
その格納データ量という意味で意味づけはできるんじゃない?
0141デフォルトの名無しさん
NGNGfseek()で終端に位置づけてftell()で位置を取得で終わりじゃん。
テキスト、バイナリの区別は必要かもしれないが、
その辺は調べてちょ。
0142デフォルトの名無しさん
NGNG次期標準だろ。
0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGたとえばifstreamを使って読み込むなら、
スペースのスキップや改行コードの変更によって
読み出せるデータ量が変わってくるんだから
132のように一文字ずつ数えるしかないんじゃ?
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG定番の釣りだな。アフォクサ。POSIXで答えでてるじゃん。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGiostreamだけ使えとは誰も言っていないにも拘らず、定期的に湧く。
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG// 省略
};
class B{
// 省略
};
class C : public A, public B{
// 省略
};
ポリモフィズムの事なんですが、
A* a = new C;
は、期待どおりの動作をし、
B* b = new C;
は、期待している動作をしてくれない、
(つまり、多重継承の場合、ポリモフィズムにできるのは1つ目に継承したクラスへのポインタだけ)
というような事を、以前、本かサイトで見た(読んだ)ような気がするのですが、
調べなおしてみても、どうもそのような事が書いてある部分を見つけられず、
以前見た(読んだ)と思っているのは、ただの勘違いのような気がしてきました。
B* b = new C;は可能か不可能か教えてください。
更に、
class D{
// 省略
};
class E : public C, public D{
// 省略
};
C* c = new E;
これは可能でしょうか?
お願いします。
0154デフォルトの名無しさん
NGNG>B* b = new C;は可能か不可能か教えてください。
可能。
>C* c = new E;
>これは可能でしょうか?
可能。
やってみてから聞け。
0155デフォルトの名無しさん
NGNG0156153
NGNGコンパイルが通るかは試しましたが、ちゃんと動作するかどうかとなると、
規格では駄目でも、たまたま動いちゃったりするかもと思ったからです。
どうもありがとうございました。
0157デフォルトの名無しさん
NGNGこれは継承と、基底クラスのポインタへの代入というだけでは?
0158デフォルトの名無しさん
NGNG「期待どおりの動作」が何を指して言ってるのか分からないので
C++言語的には正当な行為だとしか言い様がない。
まあ
C* c = new E;
こんな事してたらおおよそ期待通りの動作はしないだろうけど。
0159デフォルトの名無しさん
NGNG趣味のプログラミングなら話は別。
0160153
NGNG申し訳ないです。
言われてみれば、153に書いた例では、単に基底クラスへのポインタに代入ができるかどうかしか問題にしていませんね。
良い例が思いつかず、クラスの中身を全部省略してしまいましたが、
基底クラスには仮想関数が宣言してあって、継承したクラスを「基底クラスへのポインタ」に代入し、
仮想関数を「基底クラスへのポインタ」から呼び出す事ができるかどうか。
また、基底クラスに仮想関数がない場合でも、継承したクラスを「基底クラスのポインタ」に代入すれば、
基底クラスに含まれるメンバ関数とメンバ変数(publicであれば)を「基底クラスへのポインタから」操作できるかどうかなどの事が聞きたかったです。
もっと具体的(実践的)に、現在、知りたかった事は、インターフェース・クラスは、一番最初に継承されていなければいけない物なのかどうかです。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG誤爆スマソ
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGCVSにはもう追加されてます。
次のリリースからつかえるでしょう。
0167デフォルトの名無しさん
NGNG> 仮想関数を「基底クラスへのポインタ」から呼び出す事ができるかどうか。
できる。というか、仕様書読め。
> また、基底クラスに仮想関数がない場合でも、継承したクラスを「基底クラスのポインタ」に代入すれば、
その用途のためには、規定クラスに純粋仮想関数(実態はないが型の定義だけしてある)を
定義しておく必要がある。
> もっと具体的(実践的)に、現在、知りたかった事は、インターフェース・クラスは、一番最初に継承されていなければいけない物なのかどうかです。
別に。
0168デフォルトの名無しさん
NGNGそれも自分でコード書いてみればすぐに分かる事じゃない?
少なくとも返事を待つよりは早く結果がでるぞ。
呼び出される関数について、オーバーライドはインスタンスの型によって決まり、
オーバーロードは呼び出し時のポインタの型によって決まる。
0169デフォルトの名無しさん
NGNG> 仮想関数を「基底クラスへのポインタ」から呼び出す事ができるかどうか。
悪いけどこんな基本的なこと人に聞く人にC++は向いてないよ。
0170デフォルトの名無しさん
NGNGPOSIXで確定だよ。
今調べてみたが、フリーのVC++ToolKitにも
ちゃんとstat.hヘッダーが含まれていた。
今はファイルサイズに限定した議論になっているけど、
実用から見るとタイムスタンプ・属性などの情報もいずれ必要になってくるだろうし。
ANSI標準でのファイルサイズ取得に固執する行為は、初心者呼ばわりされるだけ。
0171デフォルトの名無しさん
NGNGパターンAとBの違いは、Baseクラスの関数にvirtual指定があるか、ないかです。
■パターンA
class Base {
virtual void Func(); // 仮想関数
}
class Deliver {
void Func();
}
■パターンB
class Base {
void Func(); // 仮想関数
}
class Deliver {
void Func();
}
0172デフォルトの名無しさん
NGNG質問に真摯に答えると、vtableが出来るからsizeofの値が違う。
できれば質問の意図を教えて欲しい。
0173デフォルトの名無しさん
NGNG違いって見たまんまだろ
パターンBのBase::Func()は仮想関数じゃないだけ
もしかしてDeliverはBaseから派生させたかったのか?
>>172
171に対してそれは無理な相談だ
0174デフォルトの名無しさん
NGNG確かに。ワロタ。
■ このスレッドは過去ログ倉庫に格納されています