Salut Guillaume, suite à de longues et difficiles recherches je suis arrivé à la conclusion suivante :
Ta question sur le constructeur de std::string(123) était une question piège car aucun des constructeurs de std::string ne colle ! Une question me vient donc à l'esprit, où voulais tu en venir ??
C++ à la vie à la mort. (Le python c'est bien aussi) || Rejoignez : https://discord.gg/9r3zqgg
Ta question sur le constructeur de std::string(123) était une question piège car aucun des constructeurs de std::string ne colle ! Une question me vient donc à l'esprit, où voulais tu en venir ??
Non, je suis un gentil, je ne fais pas de question piège... Ma question était sur std::string("123"), pas sur std::string(123).
C'est jo_link_noir qui demandait ce que faisait std::string(123). (Et la réponse est que ça ne compile pas).
Et la réponse était que "123" est de type const char[] donc le constructeur appelé pour la conversion est le 5eme:
Oui D'ailleurs, bonne question ! Si on écrit std::string{65}, qu'est-ce que ca affiche et quel constructeur est appelé. (J'ai remplacé 123 par 65 pas sans raison...)
J'avais testé std::string(123) (ou 65 d'ailleurs), et cela donnait une erreur à la compilation. J'ai regardé dans la doc pour savoir quel constructeur est appelé et apparemment aucun ne correspondait.
Intéressant gbdivers; Merci d'avoir proposé ces 4 tests.
J'ai testé effectivement et en fouillant dans C++11, grâce au livre de Scott Meyers, je me suis rendu compte qu'il y a un constructeur de string avec initializer_list qui permet de créer un string en initialisant un initializer_list<char>. Du coup notre 65 subit une conversion implicite en char, ce qui correspond d'après le code ASCII à A.
Est-ce que quelqu'un peut préciser si il y a une imprécision dans ce que j'ai écrit ?
- Edité par pseudo-simple 10 décembre 2018 à 12:20:41
Intéressant gbdivers; Merci d'avoir proposé ces 4 tests.
J'ai testé effectivement et en fouillant dans C++11, grâce au livre de Scott Meyers, je me suis rendu compte qu'il y a un constructeur de string avec initializer_list qui permet de créer un string en initialisant un initializer_list<char>. Du coup notre 65 subit une conversion implicite en char, ce qui correspond d'après le code ASCII à A.
Est-ce que quelqu'un peut préciser si il y a une imprécision dans ce que j'ai écrit ?
- Edité par YES, man il y a environ 3 heures
C'est surement l'analyse la plus juste que tu ai faite.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
C++ à la vie à la mort. (Le python c'est bien aussi) || Rejoignez : https://discord.gg/9r3zqgg
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Discord NaN. Mon site.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Discord NaN. Mon site.
Discord NaN. Mon site.