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
コメント