Le retour à une chaîne vide : efficace en c++

J'ai 2 façons de retourner une chaîne vide à partir d'une fonction.

1)

std::string get_string()
{
   return "";
}

2)

std::string get_string()
{
   return std::string();
}

lequel est le plus efficace et pourquoi?

  • Ni. Utilisation return {};.
  • Et comment est-ce lié à C?
  • Cela tombe dans le domaine de l'inutile micro-optimisation de votre compilateur d'optimiser loin à l'aide de RVO et copie élision.
  • pourriez-vous expliquer pourquoi?
  • Parce que c'est direct l'initialisation avec le constructeur par défaut, plutôt que de copier l'initialisation (à partir d'un éventuellement dynamiquement évaluée constructeur). Le constructeur par défaut peuvent être mises en œuvre sans l'allocation de constexpr si votre application est si incliné.
  • C'est (peut-être) plus efficace que le premier, car il tout simplement par défaut-les constructions de la chaîne plutôt que de lire la valeur d'une chaîne de caractères littérale; et plus efficace que le deuxième car elle nécessite moins de frappe.
  • pas différent, dans la pratique, que de retourner std::string. voir ma réponse
  • "le royaume de l'inutile micro-optimisation" peut-être que c'est la vraie question. Combien ça coûte de créer une chaîne de caractères à partir d'un char * et est-il important?