Pythonでは、int/floatを任意の力に変換する簡単な構文があります。つまり、あなた以外のPythonプログラマのために、私たちは、次のステートメントを持つことができます。** C++でのオーバーロード**
y = 2 ** 3
print y
これは、コンソールに8を印刷し、「電源」オペレータに建設されているとして素敵な構文があります。 C++で単一の演算子として "**"をオーバーロードすることは可能ですか?
int a = 2;
int b = 3;
cout << (a**b) << endl;
か、これが不可能な場合は、このような何か:
MyInt a = new MyInt(2); // Wrapper class around ints to play nicely with **
MyInt b = new MyInt(3);
cout << (a**b) << end; // Assume ostream overridden for MyInt
これらはまた、コンソールに8を印刷する必要があります具体的には、私はこのような何かを達成したいです。私は同じことをするために "^"演算子をオーバーライドする方がはるかに簡単だと理解していますが、私は主に "**"をオーバーロードできるかどうかを見たいと思っています。 "**"を指定する方法がわからないので、引数が別の "*"であるかどうかを調べる必要があります(MyIntクラスの場合、メンバー関数の場合は*)単一の演算子ですか?引数として演算子を渡すことも可能ですか?
可能であれば追加/ボーナス規定(私がまだ十分ではないかのように):マクロなし!
これは、演算子のオーバーロードと呼ばれています、演算子がオーバーロードされるためです。 **は演算子ではありません。 – DeiDei
演算子^には電源の意味で過負荷をかけないでください。==、+または - よりも優先順位が低くなりますので、多くの驚きが発生します。 –
@ÖöTiib大きなポイント! – mwm314