quelqu'un peut me dire ce que précisémentopérateur std :: string() const?
operator std::string()
est synonyme de?
quelqu'un peut me dire ce que précisémentopérateur std :: string() const?
operator std::string()
est synonyme de?
C'est un opérateur de moulage. Toute classe qui définit ce type peut être utilisée partout où un std::string
est requis. 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!".
opérateurs Cast sont presque toujours une mauvaise idée, car il y a toujours 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&)
.
C'est un conversion operator qui permet à l'objet d'être explicitement ou implicitement casté en std :: string. Lorsqu'un tel transtypage se produit, l'opérateur est appelé et le résultat du transtypage est le résultat de l'appel.
À titre d'exemple de distribution implicite, supposons que vous ayez une fonction qui a accepté le type std::string
ou const std::string&
, mais pas le type d'objet donné. Passer votre objet à cette fonction entraînerait l'invocation de l'opérateur de conversion, le résultat étant transmis à la fonction au lieu de votre type.
Je m'oppose au terme "toujours", c'est trop absolu. Je pense que "habituellement" serait un meilleur terme. –
Martin, je n'ai pas dit "toujours". J'ai dit "presque toujours" ce qui n'est pas absolu, et est, OMI, plus proche de la vérité que "habituellement". –
Loki, votre propre commentaire est trop absolu. Devrait-on * toujours * éviter le terme "toujours", ou devrait-on * habituellement * éviter le terme "toujours"? – Alyoshak