2009-08-26から1日間の記事一覧
ロベールのC++入門講座 09-02 template<typename T> ... と template<class T> ... において、動作の違いはまったくないそうです。ただし古いコンパイラではtypenameだと対応していない可能性があるらしいです。とりあえず本ブログではタイプ量の少ないclassを使っていきたいと思</class></typename>…
ロベールのC++入門講座 08-13namespaceを名前無しで定義すると無名の名前空間になります。 namespace { int i = 100; } こうして定義されたi変数はスコープがファイル内(ブロック内ではないことに注意)に限られます。 // -- main.cpp -- #include <iostream> namespa</iostream>…
ロベールのC++入門講座 08-13namespaceによる名前空間の別名を定義することができます。 #include <iostream> namespace FooBarBaz { int i = 10; } // 別名の定義 namespace FBB = FooBarBaz; int main () { // アクセスできる std::cout << FBB::i << std::endl; ret</iostream>…
http://www.geocities.jp/ky_webid/cpp/library/034.html補助的な関数です。 std::swap関数 値の入れ替えをするだけの関数です。 #include <iostream> #include <algorithm> using std::cout; using std::endl; int main () { int a = 10; int b = 20; cout << "a = " << a << end</algorithm></iostream>…
http://www.geocities.jp/ky_webid/cpp/library/029.html http://www.geocities.jp/ky_webid/cpp/library/030.html入出力ストリームの話です。ちょうど今ロベールで勉強してるところですね。実は今まで使用していたstd::coutというのはstd::ostreamクラスの…
http://www.geocities.jp/ky_webid/cpp/library/028.htmlここはざっくり読み進めるだけにしておきます。基本的にはplacement newを使ってメモリプールから領域を確保することでnew/deleteの処理速度の低下を防ぐ目的だといえば早いでしょうか。(違うかもし…
ロベールのC++入門講座 09-08テンプレートの実装をヘッダに書かなければならない理由 - (void*)Pないとの続きです。前回の記事でテンプレートの実装はヘッダで書かなければならないと言っていましたが、実はexportという指定子(?)を使えばヘッダに宣言だけを…
ロベールのC++入門講座 09-08前にテンプレートの勉強をした時に疑問に思ってた部分ですが、ロベール本で少し言及がありました。 実は関数テンプレートのテンプレート引数の場合はデフォルト引数をとることができません。これはおそらく、関数テンプレートの…
ロベールのC++入門講座 09-07タイトルがちょっとわかり辛いですが、例を見ればすぐわかると思います。まず以下の処理を見てください。 template<class T> class CSample { public: CSample<T>& operator=(const CSample<T>& obj) { // 中身は適当。とりあえず自分自身を返し</t></t></class>…
ロベールのC++入門講座 09-03ロベール本ではテンプレートの実装はヘッダに書かなければならないとさらりと書かれていましたが、何故そうしないといけないのかが本を読むだけでは今一良くわからなかったので色々調べてみたところ、理由がわかりました。まず宣…