Methoden innerhalb einer Klasse
-
alles klar Leute, vielen vielen Dank für Ihre Hilfe, werde dann wohl die Beiträge noch mal alle durchgehen und versuchen mir ein klares Bild zu machen! vielen Dank noch mal))
-
SeppJ schrieb:
icarus2 schrieb:
Bei
void Multipliktaion (const ratio r);wird eine Kopie von r uebergeben. Das heisst wenn du 'r' innerhalb der Methode veraenderst, so veraenderst du nur eine lokale Kopie.
Was man hier übrigens nicht kann, wegen des const.
Das const wird hier ignoriert (C++98, 8.3.5p3).
-
Bashar schrieb:
SeppJ schrieb:
icarus2 schrieb:
Bei
void Multipliktaion (const ratio r);wird eine Kopie von r uebergeben. Das heisst wenn du 'r' innerhalb der Methode veraenderst, so veraenderst du nur eine lokale Kopie.
Was man hier übrigens nicht kann, wegen des const.
Das const wird hier ignoriert (C++98, 8.3.5p3).
Danke fuer den Hinweis, das wusste ich nicht.
Weisst du wieso die sich dafuer entschieden haben? Das ist aus meiner Sicht etwas merkwuerdig.
-
Nein, weiß ich nicht. Aber ich vermute, es ist genau das, was SeppJ sagt, dass es sich um ein für den Aufrufer völlig uninteressantes Implementationsdetail handelt.
-
Hallo, die beiden Funktionen wurden uns vom Prof fürs nächste Praktikum vorgegeben. Sie sollen public methoden einer Klasse sein. Da gibt es noch mehr Funktionen, die alle einen & Zeichen besitzen und nur die Multiplikation ohne das Adresszeichen & da ist.. ich spiele mittlerweiler mit Gedanken es könnte sich von einem Tippfehler handeln...
-
Bashar schrieb:
SeppJ schrieb:
icarus2 schrieb:
Bei
void Multipliktaion (const ratio r);wird eine Kopie von r uebergeben. Das heisst wenn du 'r' innerhalb der Methode veraenderst, so veraenderst du nur eine lokale Kopie.
Was man hier übrigens nicht kann, wegen des const.
Das const wird hier ignoriert (C++98, 8.3.5p3).
Es wird hinsichtlich der Signatur ignoriert, im Funktionskörper kann man den Parameter aber trotzdem nicht ändern.
void foo(const int a) { ++a; // Compilerfehler } void (*bar)(int) = foo; // ok
-
SeppJ schrieb:
Bashar schrieb:
Das const wird hier ignoriert (C++98, 8.3.5p3).
Es wird hinsichtlich der Signatur ignoriert, im Funktionskörper kann man den Parameter aber trotzdem nicht ändern.
Deswegen schrub ich "hier", im Beispiel war es ja eine Deklaration.
-
schrub

-
Sirius7 schrieb:
Hallo, die beiden Funktionen wurden uns vom Prof fürs nächste Praktikum vorgegeben. Sie sollen public methoden einer Klasse sein. Da gibt es noch mehr Funktionen, die alle einen & Zeichen besitzen und nur die Multiplikation ohne das Adresszeichen & da ist.. ich spiele mittlerweiler mit Gedanken es könnte sich von einem Tippfehler handeln...
Nach allem, was ich hier im Forum bisher über Übungsaufgaben gelesen habe befürchte ich, dass der Code so aussieht

#include <stdio.h> int mul( int* a, int* b ) { return *a * *b; } void main() { int a = 7; int b = 3; int c = mul( &a, &b ); prinf( "Das Ergebnis von %d * %d ist %d", a, b, c ); }
-
Sirius7 schrieb:
Da gibt es noch mehr Funktionen, die alle einen & Zeichen besitzen und nur die Multiplikation ohne das Adresszeichen & da ist..
Das ist kein Adresszeichen. Schau dir im Lehrbuch deiner Wahl mal das Thema Referenzen an, dort wirst du feststellen, dass es einen großen Unterschied macht, wo das & steht:
- als unäres & vor einem Ausdruck (adressof-Operator)
- als binäres & zwischen zwei Ausdrücken (binärer AND-Operator)
- als Teil einer Typbezeichnung (Referenz)