< CTime と struct tm の挿入子 | <<演算子のオーバーロード >

March 2, 2004

rhs, lhs

lhsとrhs、という識別子にぶつかることがある。たとえばVBならCFooというクラスを定義する。メンバはプロパティがひとつ。グローバル変数である。

'// CFoo.cls
Option Explicit

Public Foo  As String

それから、CBarというクラスを定義する。CFooをインターフェースとしてインプリメントする。オブジェクトドロップダウンリストからCFooを選択すると、実装すべきインターフェースのスケルトンが作成される。

'// CBar.cls
Option Explicit
Implements CFoo

Private Property Let CFoo_Foo(ByVal RHS As String)

End Property

Private Property Get CFoo_Foo() As String

End Property

ほらでてきた。Property Let CFoo_Fooの引数に注目。これはright-hand side、すなわち「右辺値」を意味する慣例的な識別子であるらしい。

演算子のオーバーロードを行うC++などでは、もっと頻繁に出てきます。たとえば、複素数クラスに+演算子を定義するような、こんなサンプル。

class Complex
{
public:
   Complex( int real, int img );
   friend Complex operator+( Complex lhs, Complex rhs );
private:
   int real, img;
};
Complex operator+( Complex lhs, Complex rhs )
{
   return Complex( lhs.real + rhs.real,
                   lhs.img  + rhs.img );
}

lhsもrhsもありますね。それぞれ、左っかわ、右っかわという意味です。
この演算子は実際には、下のように使います。Aがlhs、Bがrhsとして渡される関数みたいな感じです。

int main( void )
{
	Complex A(3, 2), B(5, 6), C;
	C = A + B;
	return 0;
}

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/219

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?