bitte um hilfe bei problem mit konstruktoren
-
aufgabe ist es anzugeben welche konstruktoren/operatoren im folgenden programm (main) der reihe nach durchlaufen werden und wo es jeweils geschieht.
der programmtext lautet wie folgt:class Zahl
{
public:
Zahl(int wert) : wert(wert) {} //K1
Zahl(double wert) :wert(wert) {} //K2
Zahl& operator=(double wert) //OP
{this->wert=wert; return(*this);}private:
double wert;
};void main(void)
{
Zahl z1(8.), z2=3; //bei diesem aufruf bin ich mit hilfe des debuggers zum entschluss gekommen das zuerst K2 und danach K1 aufgerufen werden, die operatoren machen aber noch probleme
z1=z2=8;
Zahl z3=z1=Zahl(2);
}über jegliche art von hilfe wäre ich sehr dankbar da mir die zeit davonläuft
mfg und danke im vorraus schonmal
-
Juhten Tach,
Also erstmal würde ich dir Code-TAGS empfehlen, dann lassen sich deine Fragen einfacher und komfortabler beantworten...
Dann ist deine main-Funktion nicht standard-konform: int main() wäre C++ Standard

Dann würde ich in den Konstruktor bzw. Operaden Code einfach eine Stream Ausgabe einfügen, dann weißt du, was wann aufgerufen wird, etwa so:
#include <iostream> using namespace std; class Zahl { public: Zahl(int wert) : wert(wert) // K1 { cout << "Jetzt im Konstruktor 1!" << endl; } Zahl(double wert) : wert(wert) // K2 { cout << "Jetzt im Konstruktor 2!" << endl; } Zahl& operator=(double wert) // OP= { cout << "Verwendung des = Operators!" << endl; this->wert = wert; return (*this); } private: double wert; }; int main(void) { cout << "Demo f" << static_cast<unsigned char>(129) << "r Konstruktor und Operanden Aufrufe\n\n"; Zahl z1(8.0), z2 = 3; z1 = z2 = 8; Zahl z3 = z1 = Zahl(2); return (0); }Oder war etwas anderes gemeint ?

-
danke erstmal an codefinder, hast mir sehr geholfen
eine frage die ich noch hätte wäre ob nicht schon standardkonstruktoren/operatoren vorhanden sind außer den jetz von mir selbst definierten?
bin neuling auf dem gebiet also schonmal entschuldigung für die nervige fragerei

-
Moosi-M schrieb:
eine frage die ich noch hätte wäre ob nicht schon standardkonstruktoren/operatoren vorhanden sind außer den jetz von mir selbst definierten?
Standardkonstruktoren: Ja, allerdings nicht mehr, wenn du selbst einen definierst
Operatoren: Nur der Zuweisungsoperator, allerdings muss man hier vorsichtig, bei dynamischen Elementen sein
-
danke, dann wäre das geklärt x)
operatoren sind überladbar, richtig
nur ist es dann auch möglich angenommen ich hätte eine matrixklasse cMat
kann ich dort den indexoperator [] so überladen das ein zugriff durch z.B.
Matix[2, 3] möglich wird?viel gefrage aber ich bin neugierig und will mich ja weiterentwickeln
-
Moosi-M schrieb:
danke, dann wäre das geklärt x)
Kein Problem

Moosi-M schrieb:
operatoren sind überladbar, richtig
jop
Moosi-M schrieb:
nur ist es dann auch möglich angenommen ich hätte eine matrixklasse cMat
kann ich dort den indexoperator [] so überladen das ein zugriff durch z.B.
Matix[2, 3] möglich wird?nop
, wenn dann Matrix[2] [3] ...du überlädst dann einerseits den Operator [] für die Klasse Matrix und andererseits für Klasse Line oder wie auch immer du sie nennst, die ein Datenelement (Member) von Maxtrix also cMat bildet 
Moosi-M schrieb:
viel gefrage aber ich bin neugierig und will mich ja weiterentwickeln
gut so
