Jestem zdezorientowany z tymi dwoma. Jestem świadomy referencji C++, które są z natury stałe i po ustawieniu nie można ich zmienić, aby odnosić się do czegoś innego.Jaka jest różnica między "const int & jj" i "int & const jj"?
Odpowiedz
const int&
oznacza odniesienie do stałej int
. (Podobnie int&
oznacza odniesienie do const int
).
int& const
dosłownie const odniesienia (na const int
), który jest nieważny C++, bo sam w sobie odniesienia nie może być kwalifikowana const.
Cv wykwalifikowanych odniesienia są odpowiednio uformowane z wyjątkiem gdy CV kwalifikatory są wprowadzane przez zastosowanie typedef nazwy ([dcl.typedef] [temp.param]) lub specyfikator decltype ([dcl.type.simple]), w którym to przypadku kwalifikatory cv są ignorowane.
Jak już wspomniano, odniesienia są z natury stałe i po ich ustawieniu nie można ich zmienić, aby odnosić się do czegoś innego. (Nie możemy ponownie powiązać referencji po jej inicjalizacji.) Oznacza to, że referencja jest zawsze "const", wtedy referencja const-qualified lub odwołanie bez wartości stałej może w rzeczywistości nie mieć sensu.
const
Kwalifikator zastosowany do odniesienia oznacza, że nie można zmienić wartości odniesienia. Na przykład:
void foo(int& arg) {
arg = 1; // OK. The value passed by a caller will be changed in-place.
}
void foo(const int& arg) {
arg = 1; // Compilation error.
}
int& const jj
to błąd kompilacji.
Różnica:
const int& jj// means a reference to const int.
int& const jj // ill formed code that should trigger a compiler error
- 1. Czy int main (int, char const * const *) jest dobrze uformowany?
- 2. Jaka jest różnica między "const" i "val"?
- 3. Różnica między const i const lotnej
- 4. Konwersja int ** do const int **
- 5. Jaka jest różnica między Const a Constant?
- 6. Co to jest int (int) i lub int (int) const i?
- 7. Różnica między int * i int * i
- 8. Różnica między int i deklaracją int int
- 9. const int nie zajmuje miejsca?
- 10. Przypisywanie std :: function <int(int)> do std :: function <const int i (const int & x)>
- 11. Jaka jest różnica między "int * a = new int" i "int * a = new int()"?
- 12. jaka jest różnica między const, readonly a statyczną klasą
- 13. #define MY_INT VS const int MY_INT
- 14. Jaka jest różnica między static int ai int a?
- 15. Konwertuj int na const wchar_t *
- 16. Różnica między tablicami const i constexpr
- 17. Czy istnieje różnica między std :: map <int, int> a std :: map <const int, int>?
- 18. JJ proguard obfuskacja
- 19. Jaka jest różnica między jeśli (CONST == zmienna) lub jeśli (zmienna == CONST)?
- 20. Różnica między void (int) i void (*) (int)
- 21. Jaka jest różnica między "int" i "uint"/"long" i "ulong"?
- 22. Jaka jest różnica między const a immutable w D?
- 23. Jaka jest różnica między Const a Static w C#?
- 24. Jaka jest różnica między int i integer w MySQL 5.0?
- 25. Jaka jest różnica między "krótkim int" i "short" wc?
- 26. Jaka jest różnica między int() i floor() w Pythonie 3?
- 27. niezdefiniowana odniesienia do const int w shared_ptr
- 28. zadeklarować tablicę const int w C++
- 29. Czy to jest w porządku dla int ** i const int ** dla aliasu?
- 30. Jaka jest różnica między sysfs_create_file() i sysfs_create_group()?
Czy Twój kompilator zaakceptować 2nd wariant? – juanchopanza
Proszę określić, który kompilator zaakceptował dla ciebie drugi wariant. – Angew
@HumamHelfawi To wcale nie jest duplikat. To pytanie dotyczy "const int" i "int const", obydwu poprawnych (i równoważnych) formularzy. Ten zajmuje się 'const int &' i błędem składni 'int & const'. – Angew