mrs_schokokeks
Grünschnabel
Hi, also die Aufgabe lautet:
Die Anweisungen:
erzeugen die Ausgabe:
5/1 1/2 1/4 -5/17 13/24
3/4
205/24
-65/408
Dazu habe ich folgende Lösung:
Ich verstehe nicht, wann man "friend", "const" und "&" verwenden soll!
Und hier sind Auszüge aus einem anderen Programm:
Hier wird "&" vor "operator" verwendet.
Und bei
steht kein "&".
Ok, es ist vielleicht hier nicht ganz klar, wozu die gut sind ^^ aber es gibt ja bestimmte Fälle, wo "friend", "const" und "&" geschrieben werden müssen. Und die kann ich irgendwie nicht unterscheiden und bin immer wieder aufs Neue verwirrt...
Hoffentlich könnt ihr mir das ganz klar und einfach erklären!
Danke!
Die Anweisungen:
Code:
Bruch a( 5 );
Bruch b( 1, 2 );
Bruch c( 1, 4 );
Bruch d( 115, -391 );
Bruch e( -37*234, -37*432 );
cout << a << b << c << d << e << endl;
cout << b + c << endl;
cout << 8 + e << endl;
cout << d * e << endl;
erzeugen die Ausgabe:
5/1 1/2 1/4 -5/17 13/24
3/4
205/24
-65/408
Dazu habe ich folgende Lösung:
Code:
class Bruch
{private:
int z;
int n;
public:
class BruchExceptionNennerNull {};
Bruch( int zaehler, int nenner = 1 )
{
if(nenner == 0)
throw BruchExceptionNennerNull();
z = zaehler;
n = nenner;
if( n < 0 )
{
z = -z;
n = -n;
}
}
friend ostream& operator<<(ostream& os, const Bruch& br);
friend Bruch operator+( const Bruch& links, const Bruch& rechts);
Bruch operator*(const Bruch& rechts)
{
return Bruch( z * rechts.z, n * rechts.n);
}
};
ostream& operator<<(ostream& os, const Bruch& br)
{
return os << br.z << "/" << br.n << " ";
}
Bruch operator+(const Bruch& links, const Bruch& rechts)
{
return Bruch( links.z * rechts.n + rechts.z * links.n,
links.n * rechts.n );
}
Ich verstehe nicht, wann man "friend", "const" und "&" verwenden soll!
Und hier sind Auszüge aus einem anderen Programm:
Code:
class Hms
{
private:
long t;
public:
Hms& operator++(Hms &obj)
{
obj.t++;
return obj;
}
};
Hier wird "&" vor "operator" verwendet.
Und bei
Code:
class Hms
{
private:
long t;
public:
friend Hms operator+(long s, const Hms &obj)
{
Hms tmp( (s + obj.t) );
return tmp;
}
};
steht kein "&".
Ok, es ist vielleicht hier nicht ganz klar, wozu die gut sind ^^ aber es gibt ja bestimmte Fälle, wo "friend", "const" und "&" geschrieben werden müssen. Und die kann ich irgendwie nicht unterscheiden und bin immer wieder aufs Neue verwirrt...
Hoffentlich könnt ihr mir das ganz klar und einfach erklären!
Danke!