2012-03-15 20 views
0

私のクラスでオペレータ:=をC++で作成またはオーバーロードできないのはなぜですか?C:++で演算子のオーバーロード「:=」

オーバーロードできるリスト演算子はいくつかありますか?

私はオーバーロードすることができますか、またはいくつかの新しいカスタム演算子を作成できますか?

+1

リロードすると、過負荷と思われますか? –

+0

はい。ありがとうございました。 – Alex

答えて

11

C++にそのような演算子が存在しないため。パーザがそれらを認識するためには、言語の文法を変更する必要があるため、独自の演算子をロールバックすることはできません。

利用可能なオペレータhereまたはhereのリストがあります(コピーを入手できる場合は、標準を読んでください)。

最後に、明日がないような演算子のオーバーロードは、C++の初心者のほとんどが間違っていることを覚えておいてください。演算子は実際に関数だけではありません。ほとんどの場合、演算子のオーバーロードのための非常に良いケースがない限り、代わりにクラスのためのプレーン関数を書くのが良い考えです。 enter image description here

おそらく、あなたが譲渡または等号を意味:たとえば、std::stringはないは、それはあなたがオーバーロードすることができ

string sleepy = string("z") * 40; 
+0

私はその文字列演算子を持たない理由は何も見ません。これは、 'std :: basic_string'テンプレートクラスからの抜粋です。 :) – Kaz

+0

@ Kazさらに、 'class troll' ;-)への暗黙的な変換もあるはずです。 – Jon

1

演算子は、書き込みに便利だと主張することができていてもoperator*を持っていませんオペレーター。

class Object{ 

public: 

    ///Overload The Assignment Operator 
    Object& operator=(const Object& objectIn); 

    ///Overload The Equals Operator 
    bool operator == (const Object & rhs) const; 

protected: 
private: 
}; 
+0

ありがとうございます。 – Alex

関連する問題