Ho un argomento su cui sono confuso e su cui ho bisogno di approfondire. È sovraccarico dell'operatore con una versione const e una versione non const.Sovraccarico dell'operatore Const e Non-Const
// non-const
double &operator[](int idx) {
if (idx < length && idx >= 0) {
return data[idx];
}
throw BoundsError();
}
Sono consapevole che questa parte funzione di una classe, richiede un indice e verifica che la sua logica, restituisce l'indice dei dati dell'array nella classe. C'è anche una funzione con lo stesso corpo ma con la funzione chiama
const double &operator[](int idx) const
Perché abbiamo bisogno di due versioni?
Questa domanda di esempio potrebbe anche aiutare a elaborare. Quale versione viene utilizzata in ciascuna istanza di seguito?
Array a(3);
a[0] = 2.0;
a[1] = 3.3;
a[2] = a[0] + a[1];
mia ipotesi che la versione const viene chiamato solo su a[2]
perché non vogliamo rischiare di modificare a[0]
o a[1]
.
Grazie per qualsiasi aiuto.
È possibile controllare facilmente che viene chiamato con l'output al loro interno. – chris
è in una diapositiva di una conferenza quindi speravo di non dover creare una classe per utilizzarli, invece solo qualcuno mi aiuta a capire perché lo facciamo –
Non essere pigro, provalo tu stesso, ti ricorderai meglio. –