
Envoyé par
deubelte
1 2 3 4 5
|
const std::string aSet = std::string("EUROPE");
//Appel du constructeur par copie de la classe string
// En C++98, OUI, après un appel du constructeur string(const char * arg)
// Des optimisations sont possibles, qui feraient que certains appels seraient supprimés. |
1 2 3 4 5
|
const std::string aSet = "EUROPE";
//Appel du constructeur string(const char * arg)
//puis du constructeur par copie
// NON. Appel du constructeur string(const char * arg), et c'est tout |
1 2 3 4
| const std::string aSet("EUROPE");
//Appel du constructeur de la classe string
//dont la signature est string(const char * arg)
// OUI |
Par ailleurs, dans ton premier exemple, j'écrirais plus simplement :
std::string const PrefSetLevel(aSet == "0" ? "M" : "R");
Voire (mais c'est de la micro optimisation, à ne faire qu'après bench positif) :
std::string const PrefSetLevel(1, aSet == "0" ? 'M' : 'R');
Partager