Il linguaggio C++ consente di stampare il seguente codice, ad es. 1 invece di 16? Secondo altre risposte direi di sì, ma questo caso in particolare non sembra essere stato coperto.È possibile ottimizzare lo spazio di archiviazione per i riferimenti all'interno di una classe C++?
#include "iostream"
#include "cstdlib"
using namespace std;
struct as_array {
double &a, &b;
as_array(double& A, double& B)
: a(A), b(B) {}
double& operator[](const int i) {
switch (i) {
case 0:
return this->a;
break;
case 1:
return this->b;
break;
default:
abort();
}
}
};
int main() {
cout << sizeof(as_array) << endl;
}
* "ma questo caso in particolare non sembra essere stato coperto" * - che cosa pensi del tuo caso non era coperto? Solo che i riferimenti sono membri della classe? –
Mi manca qualcosa? Poiché 'a' e' b' sono riferimenti indipendenti, in che modo il compilatore implementerà la struttura, oltre a allocare spazio per due puntatori? –
> che cosa pensi del tuo caso non era coperto? sì è stato il fatto che i riferimenti sono membri della classe – user3493721