
2010年02月07日32ビット環境で64ビット整数を扱う (乗法編)
これまでの記事では、32ビット環境における64ビットの
2009年12月04日Array クラスを作る (size フィールド編)
Java では、配列の要素数をフィールド
この
一方、C++ ならば、値の変更が可能かつ、外部からの変更が不能なメンバ変数 (を模したインターフェイス) を定義することが可能です。
このエントリでは、このテクニックを使い、これまでのエントリで作成してきた Array クラステンプレート ( 2009年11月15日ビット演算の基礎
ビット演算を使用すると、1つの整数型データをビット単位で区切って、複数の用途に割り当てることができます。 例えば、符号なし整数 (unsigned int) のデータ長さが32ビットの環境であれば、一つの変数で32個の真理値 (bool: true/false に相当) を格納することができます。 また、これらの真理値を複数個まとめて参照・操作することも可能です。
しかし最近のプログラミング環境では、潤沢なメモリやライブラリの普及などにより、ビット演算を利用するような場面は、以前と比べて少なくなっています。 そのため、ある程度長くプログラミングを学んでいるにも関わらず、ビット演算が使えない、あるいはその概念自体を知らないという人も見かけるようになりました。 というわけで、今回はビット演算の基本中の基本である、ビット値の参照・操作の方法とその手順について解説します。 ちなみに、当エントリの説明では図のスペース節約のため、8ビット符号なし整数 (BYTE: unsigned char) を操作の対象としていますので、実際に使用する場合は適当なデータ長に置き換えて考えてください。 2009年07月10日参照の配列は何故作れないかさて問題です。次のコードの実行結果はどうなるでしょうか?
見出しを見た皆様のお察しの通り、正解は、「そもそもコンパイルされない」です。
このように、C++では参照の配列を作成することは出来ません。 2009年04月21日32ビット環境で64ビット整数を扱う (減法編)
32ビット環境で64ビット整数を扱う (加法編) の続き。 2009年03月11日カウンタ付き参照C++ では、new を用いてオブジェクト (メモリ領域) を確保したならば、これを delete でを明示的に解放してやらなければなりません。 この「借りたもの (メモリ) は自分で返す」という硬派なスタイルは非常に C++ らしく、またパフォーマンスの面でも優れるため、個人的にはとても気に入っています。 その一方で、このスタイルにはメモリリークや二重解放によるアクセス違反, ダングリング・ポインタの発生とった問題があり、致命的なバグの原因となりがちであることも事実です。 また、プログラムの性質上、オブジェクトが利用されなくなるタイミングが予測しづらく、明示的な解放を記述することが原理的に困難であるような状況というものも存在します。 C/C++ 以外の殆どの言語はガーベジ・コレクションを言語仕様として採用することでこうした問題を回避しています。 特に、ガーベジ・コレクション手法の一つである参照カウントは、その動作原理が非常に単純であり、またそれ故に (一般的な状況下における) パフォーマンスにおいて他の手法よりも優れています。 そこで、この参照カウントの仕組みを C++ でも利用できないかと考え、Reference というクラステンプレートを作ってみました: ソースコードは上記リンク先のページからダウンロードすることができます。 今回はこの Reference クラステンプレートの使い方について簡単に説明します。 2009年02月17日C++ スタイルのキャストC言語では、キャスト (型変換) を以下のような形式で行います。
この記法では、どのような種類のキャストが行われるのかを明示したり、不正・危険なキャストに対してチェックを行うことができないという問題があります。 2009年02月08日2008年12月19日2008年11月09日エスケープは出力時に
CGIプログラムは、HTMLを出力とすることが多い (というか殆ど) ため、入力データに対して HTML エスケープを施すものが多く見られます。
HTMLのタグや属性の記述に使用される |
SearchRecent Entries |