c++

const int = int const?


Na przykład this
int const x = 3;

ważny kod?
Jeśli tak, czy oznacza to to samo, co
const int x = 3;

?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oba są prawidłowym kodem i oba są równoważne. W przypadku typu wskaźnika, chociaż oba są prawidłowym kodem, nie są równoważne.
Ogłasza 2 Intas, które są trwałe:
int const x1 = 3;
const int x2 = 3;

Deklaruje wskaźnik, którego danych nie można zmienić za pomocą wskaźnika:
const int *p = &someInt;

Deklaruje wskaźnik, którego nie można zmienić, aby wskazywał na coś innego:
int * const p = &someInt;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak, to to samo. Zasadą w C ++ jest zasadniczo to, że
const
ma zastosowanie do typu po jego lewej stronie. Jest jednak wyjątek, że jeśli umieścisz go w lewym skrajnym rogu deklaracji, zostanie zastosowany do pierwszej części typu.
Na przykład w
int const *
masz wskaźnik do stałej liczby całkowitej. W
int * const
masz stały wskaźnik do liczby całkowitej. Możesz ekstrapolować to na wskaźnik do wskaźników, a angielski może być mylący, ale zasada jest taka sama.
Aby zapoznać się z inną dyskusją na temat korzyści płynących z robienia jednego nad drugim, zobacz

moje pytanie
https://coderoad.ru/988069/
o tym temacie. Jeśli zastanawiasz się, dlaczego większość ludzi używa wyjątków,

ten wpis
http://www.stroustrup.com/bs_f ... ement
Pomocne mogą być FAQ Stroustrupa.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak, to jest dokładnie to samo. Istnieje jednak różnica we wskazówkach. Mam na myśli:
int a;// these two are the same: pointed value mustn't be changed
// i.e. pointer to const value
const int * p1 = &a;
int const * p2 = &a;// something else -- pointed value may be modified, but pointer cannot point
// anywhere else i.e. const pointer to value
int * const p3 = &a;// ...and combination of the two above
// i.e. const pointer to const value
const int * const p4 = &a;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Z klauzuli 21 „Efektywny C ++”
char *p = "data";//non-const pointer, non-const data
const char *p = "data";//non-const pointer, const data
char * const p = "data";//const pointer, non-const data
const char * const p = "data";//const pointer, const data
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mają jedno i to samo znaczenie i znaczenie.
O ile wiem, const staje się skomplikowane tylko wtedy, gdy zawiera wskaźnik.
int const * x;
int * const x;

są różne.
int const * x;
const int * x;

to samo.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się