Jeśli chodzi o konstruktory, dodanie słowa kluczowego explicit
uniemożliwia entuzjastycznemu kompilatorowi utworzenie obiektu, gdy nie było to pierwszym zamiarem programisty. Czy taki mechanizm jest dostępny również dla operatorów odlewów?
struct Foo
{
operator std::string() const;
};
Tutaj, na przykład, chciałbym móc rzucać Foo
w a std::string
, ale nie chcę, aby takie rzucanie miało miejsce w sposób pośredni.
toString
, a nieoperator std::string
. Oczywiście może to powodować problemy z niektórymi szablonami. Zawsze używałemtoString
i nigdy nie sprawiało mi to żadnych problemów, ale wyobrażam sobie, że może to zależeć od twojego stylu kodowania.