S
const wirkt ja nur nach innen, also für die Implementierung, nicht für den Aufrufer.
Folgender Fall:
Wenn ich ein Interface ohne const bei den Parametern habe, habe ich quasi einen allgemeinen Prototypen. Dem kann ich dann eine Implementierung geben, z.B ohne const wie der Prototyp.
Jetzt merk ich später, dass es geschickt wäre wenn ich z.B. bestimmte Parameter mit const (Wert oder Adresse oder beides) belegen würde.
Der Prototyp ist allerdings schon veröffentlicht worden und darf nichtmehr geändert werden.
Ein kleiner Test hat gezeigt, dass wenn ich den Prototyp ohne const lasse, aber bei der Implementierung die Parameter mit const belege die Pointer sind (Call-by-Reference), dann bekomme ich Compiler Warnings/Errors. Bei Call-by-Value Parametern scheint es problemlos zu gehen.
Diesen Unterschied verstehe ich nicht und ich würde gern wissen ob man dies üblicherweise so macht?
Ich meine gelesen zu haben, dass der C-Standard besagt, dass ein Interface
int bla(int a, int b)
zu einem Interface
int bla(const int a, const int b)
kompatibel sei. Leider weiss ich nichtmehr wo und was hier mit kompatibel gemeint ist.