drpingoo
Erfahrenes Mitglied
Hallo zusammen,
Ja, ich weiss, ich beschäftige mich momentan intensiv mit Klassen, deswegen auch wieder eine Aufgabe dazu.
Zunächst einmal zum Verständnis des Codes, den versteh ich nämlich nicht ganz. Bei der Aufgabe steht übrigens noch folgendes:
Ein Polynom kann durch ein Array von Koeffizienten beschrieben werden. Hierbei werden
die Koeffizienten niedrigen Grades auf die niedrigen Index-Werte abgebildet. Beispiel: Hier
wird ein Polynom mit Grad (degree) 3 in einem Array der Grösse 4 abgespeichert:
3x^3 + 12.1x^2 -10.5x +8.3
Im Array sie das dann so aus: 8.3|-10.5|12.1|3.0
Folgendes Gerüst skizziert eine Klasse für Polynome. Konstruktoren, der Destruktor und zwei Hilfsfunktionen sind bereits implementiert.
Ausserdem ist die Implementation des Copy-Konstruktors angegeben. Der Copy-
Konstruktor bewirkt, dass Sie innerhalb einer Funktion, ein Objekt der Klasse CPolynom
einfach per return zurückgeben können (wie einen Basistyp) und dieses dabei korrekt
kopiert wird.
Nun zu meinen Fragen.
Wenn ich folgendes mache:
Dann weise ich doch dem neuen poly den Grad 8 zu. Was ich jedoch nicht ganz verstehen ist, wie ich das Array fülle. Er legt ja ausserdem ein Array, in diesem Falle der Grösse 9 an.
Und des weiteren verstehe ich die Aussage über den Copy-Konstruktor nicht. Was ist genau damit gemeint, was ist der Gedanke dieser Funktion?
lg
Ja, ich weiss, ich beschäftige mich momentan intensiv mit Klassen, deswegen auch wieder eine Aufgabe dazu.
Zunächst einmal zum Verständnis des Codes, den versteh ich nämlich nicht ganz. Bei der Aufgabe steht übrigens noch folgendes:
Ein Polynom kann durch ein Array von Koeffizienten beschrieben werden. Hierbei werden
die Koeffizienten niedrigen Grades auf die niedrigen Index-Werte abgebildet. Beispiel: Hier
wird ein Polynom mit Grad (degree) 3 in einem Array der Grösse 4 abgespeichert:
3x^3 + 12.1x^2 -10.5x +8.3
Im Array sie das dann so aus: 8.3|-10.5|12.1|3.0
Folgendes Gerüst skizziert eine Klasse für Polynome. Konstruktoren, der Destruktor und zwei Hilfsfunktionen sind bereits implementiert.
Ausserdem ist die Implementation des Copy-Konstruktors angegeben. Der Copy-
Konstruktor bewirkt, dass Sie innerhalb einer Funktion, ein Objekt der Klasse CPolynom
einfach per return zurückgeben können (wie einen Basistyp) und dieses dabei korrekt
kopiert wird.
Code:
#include <iostream>
using namespace std;
class CPolynom
{
private:
int degree;
double * coeff;
public:
CPolynom(const CPolynom &);
CPolynom(int d) {coeff = new double[d+1]; degree = d;};
virtual ~CPolynom() {delete [] coeff;};
int getDegree() const {cout << degree << endl; return degree;};
double* getCoeff() const {cout << coeff << endl; return coeff;};
CPolynom deriv() const;
CPolynom multiply(const CPolynom& p) const;
};
CPolynom::CPolynom(const CPolynom & p){
degree = p.getDegree();
coeff = new double[degree+1];
double* coeff2 = p.getCoeff();
for (int i=0; i<=degree; i++) coeff[i] = coeff2[i];
}
Nun zu meinen Fragen.
Wenn ich folgendes mache:
Code:
int main(){
CPolynom poly(8);
poly.getDegree();
poly.getCoeff();
return 0;}
Dann weise ich doch dem neuen poly den Grad 8 zu. Was ich jedoch nicht ganz verstehen ist, wie ich das Array fülle. Er legt ja ausserdem ein Array, in diesem Falle der Grösse 9 an.
Und des weiteren verstehe ich die Aussage über den Copy-Konstruktor nicht. Was ist genau damit gemeint, was ist der Gedanke dieser Funktion?
lg