C++

null の扱い

Maybe つながりで、色んな言語の null の扱いについてちょっとだけまとめてみた。 観点は一つ、「this が null の場合に this の指す先にアクセスしないメソッドが呼び出せるか」です。 C++ #include <iostream> struct hoge { void f() { if (this == 0) std::cout <<</iostream>…

Boost.勉強会行ってきた

C++

行ってきました。 入り口付近で受け付けっぽいことしてた変な人です。 どの発表も面白かったですけど、あえて選ぶとすればあずにやんですかね。 プリプロセッサを自動生成するためには Perl でもつかっときゃいいみたいです。 で、Boost.勉強会 名古屋をやる…

プログラミングの魔導書 Vol.1 発売前レビュー

人生初献本・・・と書くとこっちが送ったみたいですね。そうではなく、もらったほうです。ありがとうございます。と、いうことで、プログラミングの魔導書 〜Programmers' Grimoire〜ですが、Vol.1 は C++ オンリーの構成です。なんとすっぽすっぽ先生のイン…

C++ でロガーっぽい何か

C++

わんくまで見た方法を使ってでっちあげてみた。 C++ のコードを書いたのは久しぶりな気がする・・・ オリジナルと違う部分は、純粋仮想関数で固めた log_adapter でどうのこうのするんじゃなくて、template 使ったところ。 どーせこの辺は静的に決まるだろう…

2 == true が false で驚いた件

C++

Twitter 経由、 この辺はC/C++も難しくて 本質的には 2==trueも本当は真なんですが偽になったりもします。 Rubyではif(0)はtrueルート なのかっ Cと逆だな | レビログ(改装中) えっと・・・何を言っているのかよく分からない・・・ で、上のエントリに言及…

C++ の struct はデフォルトで public 継承

C++

って、案外知られてないみたいですね。 どういうことかと言うと、 #include <iostream> int main() { class hoge { public: void f() { std::cout << "hoge" << std::endl; } }; // class ex_hoge : hoge {};だと、eh.f()でエラー struct ex_hoge : hoge {}; ex_hoge e</iostream>…

C++ っぽい本を積んでみた

C++本16冊すべて届きました - 危ないRiSKのブログ C++本を積んでみた - Faith and Brave - C++で遊ぼう に乗っかって C++ っぽい本を写真に撮ってみました! ケータイで撮ったのと写真が下手なのとでボケボケになってますけどそこはこころの目で見て! 左の…

ぶつぶつ会まとめ

C++

Cryolite さん (id:Cryolite) のぶつぶつ会のまとめです。 開始は 14:20 頃からで、途中に休憩をはさんで終了は 16:20 頃。 今日は N1377をざっと通して読んでいった感じ*1。 で、以下はとってたメモをまとめたものです。move semantics、copy semantics を…

値渡しと参照渡し (と参照の値渡し)

値渡しと参照渡しは、分かってしまえば何も難しいところはないんだけど、分かるまでにちょっとした壁があるというかなんとうか・・・ てことでちょっとまとめておきますねー 値渡し (call-by-value) と参照渡し (call-by-reference) の違い 値渡しと参照渡し…

C++ テンプレートテクニック

C++テンプレートテクニック作者: επιστημη,高橋晶出版社/メーカー: ソフトバンククリエイティブ発売日: 2009/04/25メディア: 単行本購入: 16人 クリック: 219回この商品を含むブログ (54件) を見るC++ でテンプレートをまともに扱ってる本って、日本では Mod…

括弧が演算子かどうか

C++

id:otn さんに指摘をもらったので調べてみた。 結論:やっぱり優先順位変更のための括弧は演算子ではない。 まず、ISO/IEC 14882:2003 の注釈の 53 に The precedence of operators is not directly specified, but it can be derived from the syntax. とあ…

おまけ

C++

より良いコードとして紹介されてたコードを標準ライブラリの範囲内で書き直してみた。全く同じプログラムじゃないけど、どうせサンプルなんだし細かい動作はどうでもいいでしょ。 // rectangle.h #pragma once #include <iosfwd> class rectangle { struct impl; imp</iosfwd>…

許せるウソと許せないウソ

C++

ってのがあると思うんですよ。 弟の授業のプリントを見て、それはないんじゃないか?と思った点がいくつかあったんですけど、その度合いは個人によりかなり異なると思うんで、あくまで参考意見ということで。 C++とOOPLの説明 C++言語 プログラミング言語C言…

おまじない

C++

C++では#includeとか、using namespace std;とかはとりあえず「おまじない」で済まされることが多い。 でも、ここら辺をおまじないなんて教えてしまうのは何か利点があるんだろうか? #includeの説明なんて、めちゃくちゃ簡単だと思うんだけどな。 例えばHel…

本の数(Amazon)

Amazon.co.jpで、和書で検索した結果、 Java 1,434件 C++ 425件 C# 133件 Javaの結果にJavaScriptも含まれているからそのままの数字をあてにしないように。 ただ、それにしたってJavaは多いな。 Amazon.comでも検索してみた。 Java 66,898Results C++ 21,476…

マナちゃんのやさしいC++とか

同じくときどきの雑記帖さんから、マナちゃんのやさしいC++について。 この本は結構ウソというか、そんな感じの表現が目立つからおすすめはできないなー。 やっぱり初心者にはAccelerated C++がいいと思うな。 ロベールのC++入門講座は持ってないけど、ちょ…

Boost、More Exceptional C++

Boost C++をチューンアップする最先端ライブラリ - 和書 - ピアソンは教育ソリューションを通じて世界に貢献しています。 More Exceptional C++ さらに40のクイズ形式によるプログラム問題と解法 - 和書 - ピアソンは教育ソリューションを通じて世界に貢献し…

スーパークラスのフィールドへのアクセス

読書会で、抽象クラスのフィールドはデフォルトで protectedにする privateにしてprotectedなgetter/setter*1を用意する のどちらがいいか、という話があった。 昔は後者を好んで使用していたけど、最近はとりあえず前者を使うことが多い。なんたって手軽だ…

ファイナライザ、デストラクタ

読書会で話題に上がったけど、この辺の用語は言語によってまちまちで、かなり紛らわしい。 その場ではファイナライザとデストラクタは別物だよ、と言っただけなんで、補足を。 まずは、言語ごとに何を持っているのかの表を。 言語 ファイナライザ デストラク…

Pimplイディオム

C++

読書会で「C++は循環参照の記述が困難なところが・・・」という話題があったけど、その場はPimplイディオムという言葉のみを紹介しておいた。 ということで補足を。 まず、問題となるコードはこんな感じ。 // hoge.h #pragma once #include "piyo.h" class h…

RAII

C++

詳しい文脈は忘れてしまったけど、読書会で「C++はデストラクタが弱い」的な話題があがった。 その場はRAII*1使えばいいよ、とだけ言って概要のみ説明しただけだったので補足を。 まずは、RAIIの実例を知ってもらう為に、簡単なサンプルの紹介から。 void wr…

Accelerated C++

C++をはじめての言語に選択する場合、この本から入るのが一番いいんじゃないかな。 この本にあるC++を理解するには、これまでの知識が驚くほどほとんど役に立たないということです。 〜略〜 もちろん、文法上の細かい点には馴染みがあるかもしれません。しか…

続・やさしいC++

やっぱりこの本*1微妙かも。新しい形式のキャストが載ってないし、コメントの説明が 通常は、そのコードの内容をメモしておくと便利でしょう。 〜略〜 C++だけでなく、多くのプログラミング言語は、人間にとっては決して読みやすい言語ではありません。この…

やさしいC++

買ってみた。で、いきなりVisual C++ 2005 Express Editionの説明が。LinuxからWindowsへ鞍替えか? とりあえずLesson1と2を流し読みしてみたけど、英数字は全角ではなく、半角で入力してくださいだとか、本来、「cout」はstd.coutと記述するのが正式です。…

C++はじめの一歩

強烈だな、この本。 万一、ソフトの実行がとまらなくなったら、×ボタンを何度もクリックしてください。 バグの発生はよくあることです。パソコンは壊れません。あわてずに対処するのがプロなのです。 C++はじめの一歩 あわてず×ボタンを連打しまくるプロ・・…

java.util.ArrayListとstd::vectorとかローカル変数の型とか

ArrayList vs Vector (vs LinkedList) - odz bufferとかvectorとlistのメモリ効率 - 神様なんて信じない僕らのためにとか色々から。 とりあえず、JDKについてるsrc.zipでのArrayListの実装と、gcc4.1.2のvectorの実装を見てみた。 まずJavaから。 JavaのArra…

やさしい(ry

まあなんというか呆気にとられる本でした。 記述されていることはいいポイントをついているとは思うんですが、 じゃああの本を使ってC++をマスター(初歩的なレベルまでとしても)できるか、というと 2,3個疑問符が頭の上に浮かびますw 絵(マンガ)を積極的に使…

続・やさしいC++Part2

残念ながらその1はありませんでしたが、見つけたら保護する予定:) 中身の紹介は明日以降ということで。 ときどきの雑記帖 リターンズ 画像が見れないけど、画像のパスを見る限りやさしいC++Part2かな。 書店で全く見かけることがないので超期待。

C++なんて簡単だよ

C++

とかいってるC上がりの人がいたら、とりあえずModern C++ Designとか読ませれば良いと思うよ。 で、更に追い討ちでC++ Template Metaprogrammingを渡すんだ。

privateメンバの合法的アクセス

#define private public - 神様なんて信じない僕らのためにを読んで、Exceptional C++ Style*1を思い出した。 そこでは、 偽造犯 スリ 詐欺師 言語法律家 にたとえてprivateメンバのアクセス方法を説明している。この中で#define private publicはスリとして…

finally

C++にはfinallyがない。 昔は不便だなぁ、と思っていたものだけど、Javaにおけるfinallyの使い方を見ると、C++にはそんなに必要ない機能だということがわかる。なぜか。それはもちろん、C++にはデストラクタがあるから。 Javaでのfinallyブロックは、「何が…

C++テンプレートとマクロでLisp

C++テンプレートでLispに触発されて作成。 lisp.h #pragma once // nil ====================================== struct nil { typedef nil eval; }; #define nil nil::eval // t ======================================== struct T { typedef T eval; }; #…

Secure String(C++版)

Secure StringのC++版を作ってみた。Java版ともっとも大きく違うのはテンプレートを使用していること。あとコンストラクタがexplicitじゃないから初期化のときに = が使えるのも大きい。 #pragma once #include <string> /* * C++版セキュアな文字列クラス。 * std::</string>…

stringクラス?

C++にstringクラスなんてない。 std名前空間の中にもない。つまりstd::stringクラスもない。でもC++で以下のようなコードはコンパイルできるし、もちろん実行もできる。 #include <string> #include <iostream> int main() { std::string str = "hoge"; std::cout << str << st</iostream></string>…

STLで順列

C++で順列を得る方法をちょっとメモ。こんな感じで。 #include <vector> #include <list> #include <set> #include <string> #include <algorithm> #include <iostream> // コンテナの出力 template <class Container> void dispContainer(const Container& c) { std::copy(c.begin(), c.end(), std::ostream_iterator<int>(std::cou</int></class></iostream></algorithm></string></set></list></vector>…

C++の新しいキャスト(の応用?)

C++ではstatic_cast、const_cast、dynamic_cast、そしてreinterpret_castといった4つのキャストによりコードをよりわかりやすくし、さらにキャスト部分の検索もしやすくなっている。 さらにテンプレートを使用した場合と同じイディオムを使用しており、拡張…

コピーさせない

C++で実体をコピーさせたくない場合、通常はコピーコンストラクタと代入演算子をprivateにしたり、boost::noncopyableを使う。 で、考えたんですが、そもそも「実体」にアクセス出来ないようにしてしまえばいいんじゃないかと。以下実装例です。 #include <iostream> /</iostream>…

スレッドクラス

C++でWin32APIをラップしたようなライブラリを作ってるんだけど、スレッド機能の実装にて。 スレッドを開始するには_beginthreadex関数を使用する 主な引数は呼び出す関数の開始アドレスとそれに渡す引数(void*型) で、関数は__stdcall呼び出し規約である必…

翻訳(C++でタイプセーフEnumパターン)

いやぁ、翻訳は結構疲れるね。 おかしいところとか、訳してないところとかあるんで是非添削してください。 っつーかコンパイルエラーになったりする部分どうしようかな。 BCC5.5とVS2005(2003も)で動くまとめページでもつくろうかな。 翻訳じゃなくてまとめ。…

C++/CLIを使ってみた

いや、使いにくいのなんのって。 一応サンプルらしきものを。 HTML版も。