opérateur std:: string () const?
quelqu'un Peut-il me dire ce que précisément
operator std::string()
signifie?
2 réponses
C'est un opérateur de conversion qui permet à l'objet d'être explicitement ou implicitement coulé à std::string. Quand un tel casting se produit, l'opérateur est appelé et le résultat de la fonte est le résultat de l'invocation.
comme exemple de distribution implicite, supposons que vous ayez une fonction qui accepte le type std::string
ou const std::string&
, mais pas le type d'objet donné. Passer votre objet à cette fonction aurait pour résultat que l'opérateur de conversion soit invoqué, avec le résultat passé à la fonction, au lieu de votre type.
C'est un opérateur de cast. N'importe quelle classe qui définit ce type peut être utilisée n'importe où a std::string
est obligatoire. Par exemple,
class Foo {
public:
operator std::string() const { return "I am a foo!"; }
};
...
Foo foo;
std::cout << foo; // Will print "I am a foo!".
les opérateurs de coulée sont presque toujours une mauvaise idée, car il y a invariablement une meilleure façon d'obtenir le même résultat. Dans le cas ci-dessus, il est préférable de définir operator<<(std::ostream&, const Foo&)
.