Das ist also der ursprüngliche Code:diesen Code zu verstehen Zeiger, Arrays und die neuen Betreiber
class IntegerArray {
public:
int *data;
int size;
};
int main() {
IntegerArray arr;
arr.size = 2;
arr.data = new int[arr.size];
arr.data[0] = 4; arr.data[1] = 5;
delete[] a.data;
}
Nach arr.data = new int[arr.size]
zu einem Konstruktor zu bewegen, wird es
class IntegerArray {
public:
int *data;
int size;
IntegerArray(int size) {
data = new int[size];
this->size = size;
}
};
int main() {
IntegerArray arr(2);
arr.data[0] = 4; arr.data[1] = 5;
delete[] arr.data;
}
ich ziemlich bin verloren was der Code versucht zu tun. Für
IntegerArray(int size) {
data = new int[size];
this->size = size;
}
Ist die int-Größe genau so groß wie die int-Größe, die in der Klasse IntegerArray deklariert wurde?
Gibt data = new int[size]
nur uns sagen, dass Daten auf die Ausgabe des Arrays bei int-Größe zeigt, mit neuen Worten, dass die Größe des Arrays variabel ist?
Ist this-> size = size
nur ein Zeiger, der uns sagt, dass der Größenwert des Konstruktors nur gleich dem Größenparameter der Klasse ist?
Warum werden arr.data[0]
und arr.data[1]
sogar nach IntegerArray arr (2) erwähnt? Sie scheinen dem Konstrukteur nicht zu folgen, aber ich bin wahrscheinlich einfach zu müde, um diesen Teil zu verstehen.
Warum "neu" und "löschen" verwenden? Das ist 2016! –
Oh, ist meine Lesequelle zu alt? Ich gehe von MITs Folien für ihre C++ - Klasse. Ich dachte arr [] bedeutete, das Ergebnis für jede Zahl vom Anfang des Arrays zurückzugeben, also werde ich von data = new int [size] abgeworfen. – AttemptingTo
Sie liegen nicht falsch, aber das ist eine Art unsichere, verwirrende und fehleranfällige Art, Arrays in C++ zu erstellen! Du hättest das Problem nicht, wenn du Tools wie 'std :: vector' benutzt hättest (was seit 1998 existiert und schon seit Jahren Standard ist!). Dies beantwortet deine Frage allerdings nicht. –