opérateur std:: string () const?

quelqu'un Peut-il me dire ce que précisément

operator std::string()

signifie?

24
demandé sur Alex 2010-06-15 15:29:21

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.

22
répondu Michael Aaron Safyan 2010-06-15 11:31:48

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&).

14
répondu Marcelo Cantos 2010-06-15 11:31:43