Una stringa stringa regolare letterale ha la seguente definizione:Perché si sta restituendo un riferimento a una stringa letterale come riferimento a un riferimento temporaneo?
ordinaria stringhe e UTF-8 stringhe sono anche denominati come strette stringhe letterali. Un letterale stringa stretto ha tipo "array di n const char", dove n è la dimensione della stringa come definita di seguito, e ha durata di archiviazione statica (3.7).
Sto assumendo perché ha una durata di archiviazione statica e che in genere sono posizionati nella ROM, non è davvero un grosso problema se c'è un riferimento ciondolante ad esso. Il seguente codice emette un avvertimento
const char* const & foo()
{
return "Hello";
}
// warning: returning reference to temporary [-Wreturn-local-addr]
Ma questo va bene, anche senza la parola chiave static
const char* const & foo()
{
const char* const & s = "Hello";
return s;
}
Allora, qual è la differenza tra i due?
Il codice non restituisce un riferimento a una stringa letterale. Restituisce un riferimento a un puntatore. La maggior parte di ciò che citi è irrilevante per il codice. –
Da dove viene la tua citazione? Dovresti aggiungerlo. – dhein
Perché stai restituendo un riferimento a un puntatore del char invece del puntatore del char stesso? – CodesInChaos