Typ ten wskaźnik
To wskaźnika typu mogą być modyfikowane w deklaracji funkcji przez const i volatile słowa kluczowe.Aby zadeklarować funkcję jako posiadające atrybuty jednego lub więcej z tych słów kluczowych, należy dodać słowa kluczowe po lista argumentów funkcji.
Rozważmy następujący przykład:
// type_of_this_pointer1.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
Powyższy kod deklaruje funkcji składowej, X, w którym to wskaźnik jest traktowany jako const wskaźnik, aby const obiektu.Kombinacje cv mod listy opcje mogą być używane, ale zawsze zmodyfikować obiekt wskazywanej przez to, nie to wskaźnik sam.W związku z tym, następujące oświadczenie deklaruje funkcję X; to wskaźnik jest const wskaźnik, aby const obiekt:
// type_of_this_pointer2.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
Typ to w Państwie Członkowskim funkcja jest opisana przez następującą składnię, gdzie listy Kwalifikator cv jest określana na podstawie; niewłaściwy z deklarator Członkowskich funkcje i może być const lub lotnych (lub oba), i typu klasy jest nazwa klasy:
typem klasy [cv kwalifikatora lista***constto**
Innymi słowy to jest zawsze const wskaźnik; nie może zostać przypisany.Const lub volatile kwalifikatory używane w deklaracji funkcji członka stosuje się do instancji klasy wskazywanej przez to w zakres tej funkcji.
W poniższej tabeli opisano bardziej temat działania tych modyfikatorów.
Semantyka tej modyfikatorów
Modyfikator |
Znaczenie |
---|---|
Const |
Nie można zmienić dane elementu członkowskiego; nie można wywołać funkcji elementów członkowskich, które nie są const. |
volatile |
Dane elementu członkowskiego jest ładowany z pamięci, ilekroć jest dostępny; wyłączenie niektórych optymalizacje. |
Jest błędem, aby przekazać const obiektu do funkcji składowej, który nie jest const.Podobnie, występuje błąd do przekazania volatile obiektu do funkcji składowej, który nie jest volatile.
Członkowskich funkcje deklarowane jako const nie można zmienić dane elementu członkowskiego — w takich funkcji to wskaźnik jest wskaźnik do const obiektu.
[!UWAGA]
Konstruktory i destruktory nie mogą być zadeklarowane jako const lub volatile.Jednakże może to być wywoływane na const lub volatile obiektów.