struct CCompare
{
const bool operator()(const int& lhs, const int& rhs) const {
return lhs < rhs;
}
};
Attenzione C4180 1 avvertimento: qualificatore Riferito alla funzione di tipo non ha alcun significato ;ritorno del `bool` const provoca avviso C4180
Ho visto l'utilizzo con il valore restituito come const bool
in un libro di programmazione. Quando ho compilato il codice sopra con vs2010, riporta l'avviso C4180.
Il seguente codice invece non causerà lo stesso avviso.
struct CCompare
{
bool operator()(const int& lhs, const int& rhs) const {
return lhs < rhs;
}
};
Question1> E 'vero che l'uso di const Fundamental_Data_Types
in funzione restituito il valore non ha senso?
Question2> E 'vero che l'uso di const Type
come un valore restituito funzione ha senso solo se e solo se il tipo è una classe/struct?
Grazie
// // Aggiornamento
struct CClass
{
int val;
CClass(int _val) : val(_val) {}
void SetValue(int _val) {
val = _val;
}
};
struct CCompare
{
const CClass getMe() const {
return CClass(10);
}
CClass getMeB() const {
return CClass(10);
}
};
int main(/*int argc, char *argv[]*/)
{
CCompare c;
c.getMe().SetValue(20); // error
c.getMeB().SetValue(20); // ok
}
In entrambi i casi, il valore di ritorno viene copiato nel chiamante. Non hai il diritto di far rispettare 'const' su un valore copiato che stanno tornando. – chris
'const' ha senso solo se si restituisce un riferimento o un puntatore, indipendentemente dal fatto che si tratti di una classe/struct o di un tipo fondamentale. –
vc2012 nessun avviso. – Jichao