2

Borland C++ Builder 6 を使用して、簡単な文字列連結を試みています。しかし、私は興味深い問題だと思うことに遭遇しました。

オンラインで見つけることができるものはすべて、次のような簡単なことを実行できるはずだと述べています。

String word = "a" + "b" + "c";

ただし、このコードをコンパイルしようとすると、「無効なポインターの追加」エラーが発生します。各パーツを独自の変数に割り当て、それらをそれぞれ追加して、目的の出力を得ることができました。ただし、これがいかに単純な例であるかを考えると、それは不要だと思います。

上記に似たものを希望どおりに機能させることができた唯一の方法は、これを行うことです。

String a = "";
String word = a + "a" + "b" + "c";

私の質問は次のとおりです。なぜ 2 番目の例は問題なく動作するのに、最初の例ではうまくいかないのでしょうか?

4

2 に答える 2

3

その理由は、の型"a"char*(つまり、char へのポインター) であるためです。

"a" + "b"

ポインターを一緒に追加しようとしていますが、これは許可されていません。

String型を作成すると、operator+がオーバーロードされるため、

String a = "";
a + "b"

String独自の連結定義を持つa に char へのポインタを追加します。

于 2012-06-06T16:02:26.450 に答える
0

よくわかりませんが、これはおそらく引数のせいです。最初の行の「a」はchar*であるため、他の文字列を追加しても結果は になり、オブジェクトchar*に直接割り当てることはできませんString。2 番目のケースは、最初の引数がString型の場合、すべての結果も文字列であるため、代入が可能であることを示しています。

于 2012-06-06T16:04:36.063 に答える