Funktionsparameter const * const - Sinn des zweiten const?
Verfasst: 19.04.2011, 12:53
Moin.
Wenn man von const-Correctness spricht, sieht man oft Code wie diesen als propagierte Ideallösung: void foo(const int* const foobar);
Wo ist der Vorteil gegenüber void foo(const int* foobar); ?
Im ersten Fall ist nicht nur die Variable, auf die der Pointer zeigt, konstant, sondern zusätzlich auch noch der Pointer selbst, das ist mir klar.
Aber was bringt es, den Pointer const zu machen? Er wird doch eh per value kopiert?
Man schreibt ja schließlich auch nicht void foo(const int foobar);, sondern schlicht void foo(int foobar);, weil der Parameter eh kopiert wird und man das Original so eh nicht verändern kann, egal ob const oder nicht. Das selbe trifft doch auch auf das const von int* const zu?
Wenn man von const-Correctness spricht, sieht man oft Code wie diesen als propagierte Ideallösung: void foo(const int* const foobar);
Wo ist der Vorteil gegenüber void foo(const int* foobar); ?
Im ersten Fall ist nicht nur die Variable, auf die der Pointer zeigt, konstant, sondern zusätzlich auch noch der Pointer selbst, das ist mir klar.
Aber was bringt es, den Pointer const zu machen? Er wird doch eh per value kopiert?
Man schreibt ja schließlich auch nicht void foo(const int foobar);, sondern schlicht void foo(int foobar);, weil der Parameter eh kopiert wird und man das Original so eh nicht verändern kann, egal ob const oder nicht. Das selbe trifft doch auch auf das const von int* const zu?