Was hat das "other" im Konstruktor zu suchen???
-
Hallo

und sorry, falls ein ähnlicher Beitrag schonmal verfasst wurde, habe die Suche benutzt, aber bin nicht fündig geworden.
Hier ist eine Headerdatei, die ich an sich auch verstehe, aber die markierten Sachen nicht wirklich.
Könnte mir jemand die fett markierten Sachen mit dem Konstruktor erklären?
Und vielleicht auch den Destruktor, das mit dem inline peil ich nicht. Da steht ja kein "inline" ?!
Vielen Dank schonmal für die Hilfe und sorry!
#ifndef _PKW_H
#define _PKW_H#include <iostream>
using namespace std;
class Pkw{
private:
char *marke;
unsigned long fgstnr;
unsigned int leistung;public:
Pkw(unsigned long fgstnr, char const *marke="Mercedes", unsigned int leistung=100);
Pkw( Pkw const &other);Pkw &operator=( Pkw const &other);
void setLeistung(unsigned int leistung);
void setMarke(char const *marke);char const *getMarke() const;
unsigned long getFgstnr() const;
unsigned int getLeistung() const;
~Pkw(){ delete [] marke;} // Inline Methode
};#endif
-
Google: Konstruktor, Operatorüberladung (Zuweisungsoperator), Destruktor. Zudem vielleicht noch
http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming)
-
'other' ist einfach der Parameter - Name für die Methode. Der Konstruktor (und die operator= - Methode) bekommen als Parameter eine Referenz auf ein Objekt vom Typ Pkw, welches nicht verändert werden kann (const) und in der Methode mit dem Variablennamen 'other' angesprochen werden kann.
Die 'inline' - Methode ist inline, weil sie innerhalb der Klassendefinition definiert ist - während zB die og. Methoden lediglich deklariert sind, und außerhalb der Klassendefinition definiert werden müssen.
-
Hallo Neuling2112,
Pkw(Pkw const &other);Dies ist der sog. Kopierkonstruktor (copy constructor) und other ist dabei das 'andere' zu kopierende Objekt. Und gleiches gilt für die Zuweisung.
Es sind automatisch alle Methoden inline, welche innerhalb der Klasse definiert werden.
P.S: Bitte benutze hier im Forum die C++-Tags (Button unter den Smilies), um deinen Code zu formatieren.
Und ich könnte jetzt noch etwas zur Benutzung von std::string schreiben, aber der Code soll ja wohl Kopierkonstruktor und Zuweisung sowie Freigabe erläutern.
Aber wenigstenschar const *marke;sollte schon benutzt werden...
-
Vielen dank

Hat mir wirklich alles geholfen.Und in Zukunft halte ich mich an die Formatierung
