Powiel możliwe:
Difference between const declarations in C++const pozycji słów kluczowych w deklaracji funkcji
#include <iostream>
class Bar{};
void foo(const Bar x){} //l5
void foo(Bar x){} //l6
void foo(Bar const x){} //l7
////pointer functions
void foo(const Bar* x){} //l11
void foo(Bar* x){} //l12
void foo(Bar* const x){} //l13
wyjście Compiler (długie opowiadanie l5
, l6
, l7
konfliktu, lecz tylko l12
, l13
konfliktu)
untitled.cpp:6:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:7:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:13:6: error: redefinition of ‘void foo(Bar*)’
untitled.cpp:12:6: error: ‘void foo(Bar*)’ previously defined here
Co się dzieje?
- Jakie jest znaczenie każdego z deklaracji
- Dlaczego wszystkie 3 deklaracje konflikt z funkcji obiektu, ale tylko 2 z funkcjami wskaźnika?
- Należy opracować że konflikt jest między
l12
il13
, choćl12
nie zawieraconst
słowa kluczowego - Naprawdę przepraszam jeśli trywialne pytanie
Powtórz zdanie: nie ma to znaczenia dla kompilatora, w tym konkretnym kontekście. Zasadniczo jednak "const" modyfikuje to, co je poprzedza, a umieszczanie "const" systematycznie po tym, co modyfikuje (tj. 'Int const', a nie' const int') sprawia, że kod jest bardziej czytelny. –