Chris schrieb:
> okay ich habe mit {nMusiker= nAnz;} nur den Wert zugewiesen und mit
> nMusiker ( nAnz ) ist es eine Inizialisierung.
> Mir war die Schreibweise des Elementeninizialisierer mit int i(5);
> leider nicht bekannt...
Ist völlig analog zu
1 | int main()
|
2 | {
|
3 | Kammermusik myKammerObjekt( "Mozart", "Nachtmusik", "1687", "Dur", 4 );
|
4 |
|
5 | int i ( 5 );
|
6 | }
|
Wenn du ein Kammermusik Objekt erzeugst, gibst du ja auch dem
Konstruktor ein paar Werte zur Initialisierung mit. Da ist es doch nur
recht und billig, dass man genau die gleiche Schreibweise auch zur
Initialisierung von int oder double oder sonstigen Variablen benutzen
kann:
1 | Datentyp Name_der_Variablen Initialiwert(e)_in_Klammern_eingeschlossen
|
Es gibt keinen Grund, warum man dieses Schema nicht auch auf int
anwenden können sollte.
C++ hat natürlich auch von C die alte Schreibweise geerbt
aber das ist nur haarscharf genau dasselbe in einer anderen
Schreibweise. Achtung: Das ist eine Initialisierung und keine Zuweisung.
Selbst wenn da = steht!
>
> Das mit dem Zugriff in einer Klasse ist mir bekannt. Mir ist trotzdem
> noch nciht gnaz klar wuarm ich hier eine Inizialisierung mache.
Weil es Datentypen gibt, die du zwar initialisieren kannst, denen du
aber nichts zuweisen kannst.
zb const Member
1 | class Test
|
2 | {
|
3 | public:
|
4 | Test( int val )
|
5 | : value( val ) // value kann initialisiert werden
|
6 | {
|
7 | value = val; // Fehler: einer Konstanten kann man nichts zuweisen!
|
8 | }
|
9 |
|
10 | private:
|
11 | const int value;
|
12 | }
|
Referenzen ist genau dasselbe. Worauf eine Referenz verweist, wird bei
der Initialisierung festgelegt. Mittels Zuweisung ist das nicht mehr zu
ändern.
>
> ist in meinem Beispiel
>
>>private: int nMusiker ;
>
> kein Initzialisierung?
Siehst du da irgendwo einen Initalwert?
Initialisierung heißt doch: Sobald etwas zur Welt kommt (die Variable)
verpassen wir ihr noch während des Geburtsvorgangs ihren ersten Wert,
den Initalwert.
Drum heißt es ja auch Initialisrung (und man schreibt Initialisierung
und nicht Inizialisierung. T, nicht Z) und nicht Zuweisung. Jeder
Versuch den Wert einer Variablen zu verändern, nachdem sie zur Welt
gekommen ist, kann nur noch eine Zuweisung sein und keine
Initialisierung.
C++ unterscheidet da ganz strikt.