タグ

演算子とC++に関するtyosuke2011のブックマーク (4)

  • フレンド演算子関数

    グローバルな演算子関数 演算子のオーバーロードにフレンド関数を用いることもできます フレンド関数を用いることで、グローバルな演算子関数を表現できます フレンド関数を用いるに当たり、最も重要な機能は メンバ関数と異なり、明示的にオブジェクトを受け取るという点です フレンド関数に this ポインタが存在しないこと思い出してください メンバ関数によるオーバーロードは、次のような演算ができませんでした 1000 + object; メンバ演算子関数は、必ずオブジェクト型が左辺にくるという約束があったからです しかし、フレンド演算子関数は双方を明示的に受け取るため これに縛られることなく、比較的自由な演算を行うことができます #include<iostream> using namespace std; class Integer { public: int value; friend void

  • キャスト演算子

    動的キャスト C++では、C言語の型キャストをそのまま使うことができますが それ以外に、C++特有の型キャスト演算子が用意されています その中でも、とくに重要なのが dynamic_cast でしょう この演算子は、C++のポリモーフィッククラスに対応しているもので 実行時型変換を行い、有効であれば型を変換します dynamic_cast < type-id > ( expression ) type-id には、変換する目的の型を指定します 必ずポインタ型か参照でなければいけません expression は、目的の型に変換する式を指定します type-idがポインタ型ならポインタ、参照ならば変数を指定します #include<iostream> using namespace std; class Kitty { public: virtual void func() { cout <<

  • 実行時型情報

    オブジェクトの型を知る C++のようなオブジェクト指向言語では、ポリモーフィズムをサポートしています オーバーライドで知ったように、場合のよっては実行されるまで性質がわからないオブジェクトが存在します この柔軟性はプログラムの効率に非常に大きな影響を与えます しかし、実行中に現在のオブジェクトの型を知る必要があるケースもあります といって、コンパイル時にオーバーライドされた仮想関数の型を知ることはできません そこで実行時型情報という機能を用いて、実行中にその型を調べる必要があります 実行時型情報は RTTI(Run-Time Type Identification) とも呼ばれます この機能を用いることで、ポリモーフィッククラスの型の操作などが動的に行えます 実行時型情報を得るには typeid 演算子 を用います この演算子は const type_info & を返します type_i

  • ビット演算 - Wikipedia

    ビット演算(ビットえんざん、英: bitwise operation)とは、主にコンピュータで行われる演算のひとつで、データをビット列(つまり0か1が多数並んだもの)と見なして、各ビットの移動やビット単位での論理演算を行うもの[1]。 デジタルコンピュータの内部では、情報をビット列として表しており、CPUやMPUなどにはビット演算用の命令が多種用意されている[1]。特に機械語のプログラムでは多用される演算であり、高水準言語のソースコードでは直接記述されていない場合でも結局機械語に変換されて実行されるので、内部的に多用されている[1]。 ビット演算は大きく分けて次のように二種類ある[1]。 ビット単位の論理演算[1] NOT, AND, OR, XORがある。 ビットの位置を入れ替える操作[1] 大きく分けるとシフト演算(一方向に単純に移動させる操作)とローテート演算(ビット列の先頭と末尾を

  • 1