void outputString(const string &ss) {
cout << "outputString(const string& ) " + ss << endl;
}
int main(void) {
outputString("constant tranformed to reference argument");
//! outputString(new string("abc")); new only return pointer to object
return 0;
}
メソッドに変換する一時オブジェクト参照を作成することは禁止されているため、この構文は役に立たないはずですが、さらに混乱を招く可能性があります。では、なぜC ++はこの種の構文をサポートする必要があるのでしょうか?
編集:正直なところ、私はあなたの表現を理解していませんでした。上記の例を考えると、通常はvoid outputString(const string ss)
代わりに使用します。通常は、定数/変数を処理する「値渡し」メソッドと「参照渡し」メソッドだと思います。void outputString(const string &ss)
メソッドは変数のみを処理します。定数const type-id &
の代わりに使用する必要がある唯一の理由const type-id
は効率です。「参照渡し」メソッドはプリミティブ定数/オブジェクト変数のポインター(アドレス)のみを取得しますが、「値渡し」メソッドはコピー。
ありがとう。