¿Debo devolver std :: strings?

Estoy tratando de usarstd::string en lugar dechar* siempre que sea posible, pero me preocupa que pueda estar degradando demasiado el rendimiento. ¿Es esta una buena manera de devolver cadenas (no hay errores al verificar la brevedad)?

std::string linux_settings_provider::get_home_folder() {
    return std::string(getenv("HOME"));
}

Además, una pregunta relacionada: al aceptar cadenas como parámetros, ¿debería recibirlos comoconst std::string& oconst char*?

Gracias.