39

誰か正確に教えてくれませんか

operator std::string()

を意味する?

4

2 に答える 2

32

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

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

于 2010-06-15T11:31:48.207 に答える
21

キャスト演算子です。この型を定義する任意のクラス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&)

于 2010-06-15T11:31:43.060 に答える