web-dev-qa-db-ja.com

演算子std :: string()const?

誰かが正確に何を教えてもらえますか

operator std::string()

を意味する?

30
Johnny

これは 変換演算子 であり、オブジェクトを明示的または暗黙的にstd :: stringにキャストできます。このようなキャストが発生すると、演算子が呼び出され、キャストの結果が呼び出しの結果になります。

暗黙的なキャストの例として、タイプstd::stringまたはconst std::string&を受け入れたが、指定されたオブジェクトタイプを受け入れなかった関数があるとします。オブジェクトをその関数に渡すと、変換演算子が呼び出され、その結果が型ではなく関数に渡されます。

24

キャスト演算子です。このタイプを定義するクラスは、_std::string_が必要な場所であればどこでも使用できます。例えば、

_class Foo {
public:
    operator std::string() const { return "I am a foo!"; }
};
...
Foo foo;
std::cout << foo; // Will print "I am a foo!".
_

同じ結果を達成するためのより良い方法が常にあるため、キャスト演算子はほとんどの場合悪い考えです。上記の場合、operator<<(std::ostream&, const Foo&)を定義することをお勧めします。

16
Marcelo Cantos