ich habe mal wieder eine Frage zu C++.
Kann mir jemand mal bitte folgenden Code erklären:
Code: Alles auswählen
// Array1.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
template <class T, int n>
class Array {
private:
T array[n];
public:
int get_size () const {
return n;
}
T& operator[] (int i);
};
template <class T, int n>
T &Array<T, n>::operator[] (int i) {
if(i < 0 || i >= n ) {
cout << "Array-Überlauf!!!\n";
exit(1);
}
return array[i];
}
int main( void ) {
Array<char, 20> str1;
Array<int, 5> integers;
cout << "Wie heißen Sie: ";
cin.getline( &str1[0], str1.get_size() );
cout << "DEBUG " << &str1[0] << " : " << str1[0] << "\n";
cout << "Hallo ";
for(int i=0; str1[i] != '\0'; i++) {
cout << str1[i];
}
cout << "\n";
for( int i=0; i < integers.get_size(); i++ ) {
cout << i+1 << ". Wert: ";
cin >> integers[i];
}
cout << "Die Zahlen die eingegeben wurden ...\n";
for( int i=0; i < integers.get_size(); i++ ) {
cout << i+1 << ". Wert: " << integers[i] << "\n";
}
return 0;
}
1.) Wieso ist hier die Operator-Überladung nötig?
2.) Bei der Tastatureingabe wird das Objekt als &str1[0] angegeben. Wieso muss das &-Zeichen davor? Dies gibt doch normalerweise eine Adresse zurück oder besagt, dass es sich um eine Referenz handelt.
3.) Array<char, 20> str1;
--> hiermit wird doch über den Default-Konstruktor das Objekt str1 aus dem Klassentemplate Array<T> erzeugt.
Und noch die Ausgabe:
Code: Alles auswählen
Wie heißen Sie: Daniel
DEBUG Daniel : D
Hallo Daniel
1. Wert: 2
2. Wert: 4
3. Wert: 3
4. Wert: 22
5. Wert: 11
Die Zahlen die eingegeben wurden ...
1. Wert: 2
2. Wert: 4
3. Wert: 3
4. Wert: 22
5. Wert: 11