2011-07-24 11 views

答えて

7

これはoperator *の過負荷です。使用する構文は*(y)で、yvectorです。

これは、Cのポインタ参照と同様の実装のような参照を許可します。もちろん、実際の意味はボディに依存します。例えばベクトルの内部要素への参照を返すことができます。

1

これは*演算子の関数オーバーロードです。

0

de-reference演算子をオーバーロードする関数のオーバーロード*

-2

実際には、* ptr!のような参照演算子ではありません!実際には乗算演算子のような演算子です。ここでは簡単な例を示します

#include <iostream> 
using namespace std; 

struct Int{ 
int val; 
Int(const int val = 0) : val(val){} 
int operator*(const Int& number)const{ 
    return val * number.val; 
} 
}; 

int main(){ 
    Int n(4), m(5); 
    cout << n * m << endl; //use the operator*() implicitly 
    cout << (n.operator*(m)) << endl; //use the operator* explicitly 
} 

de-ferenceing演算子を定義するには、そのプロトタイプは演算子*()になります。詳細についてはhereをご覧ください。 Hereはテストするライブコードです。

+0

ほとんどのオーバーロードされた演算子は非メンバ関数として定義することができ、単項演算*は例外ではありません。 http://ideone.com/sPixfそれがメンバー関数であれば、それはバイナリ*ですが、図示のようにunary *が可能性が高いです。 –

+0

ああ、あなたが正しいと思っている、それは通常の機能であることを認識していない。 – dchhetri

0

逆参照演算子または乗算演算子のオーバーライドのいずれかです。それが名前空間にある場合は逆参照であり、クラス内の場合は乗算です。ボディーとクラススコープがないので、逆参照であるとも仮定します。

関連する問題