0

これらの2つのコンストラクターがある場合MyClass

MyClass(int n1);
MyClass(int n1, int n2);

およびオーバーロードされた(非メンバー)operator+

MyClass operator+(MyClass m1, const MyClass& m2);

これにより、次のようなコードを記述できます。

MyClass m;
5 + m:

定義されたコンストラクターを介した暗黙のキャストを使用していると思いますが、正しいですか?

コンストラクターが2つの引数を取ることで、この暗黙のキャストを行う方法はありますか?コードは次のようになります。

MyClass m;
{15, 8} + m:

または、{9、4}からMyClassオブジェクトへの明示的なキャストを行うだけですか?

4

3 に答える 3

5

一言で言えば、いいえ。最も簡潔なオプションはMyClass(15,8) + m;です。

于 2010-09-29T22:04:21.900 に答える
1

いいえ、ただし、その場で構築できます。

MyClass m;
m + MyClass(15,8);
于 2010-09-29T22:05:06.300 に答える
0

私はそうは思いませんが、なぜ明示的ではなく暗黙的である必要があるのですか?とにかく角かっこ表記を使用する必要がある場合、それは単一の変数から生成できるものではないので、単に次のように言うことにマイナス面はないと思います。

myclass(15, 8) + m;

これにより、スタック上に生成され、暗黙的なキャストと同じ結果が生成されます。

于 2010-09-29T22:05:41.667 に答える