Поля классов С++ похожи на элементы структур с некоторыми дополнениями:
• поля не могут определяться со спецификаторами auto, extern или register;
• полями могут быть перечислимые типы, битовые поля или представители ранее объявленных классов;
• элементом-данных класса не может быть представитель самого этого класса;
• полем класса может являться указатель или ссылка на представитель этого класса.
В C++ вводится понятие класса как области действия: имена всех элементов класса находятся в области класса – они могут использоваться функциями-элементами класса. Имена элементов класса могут также использоваться в следующих случаях:
• - с представителем класса, за которым следует оператор точка, например
представитель.имя_элемента
• - с указателем на представитель класса, за которым следует оператор ->, например
указатель->имя_элемента
• с именем класса, за которым следует оператор :: разрешения области видимости, например
имя_класса::имя_элемента
Функции-элементы класса находятся в области действия класса, в котором они определены. Таким образом, они могут обращаться к любому элементу класса, используя просто имя переменной. Обычные функции или функции-элементы другого класса могут получить доступ к элементам данных с помощью операторов . или ->, применяемых соответственно к представителю или указателю на представитель класса. Например:
class CCoord
{
public:
int x, y;
};
int main(void)
{
CCoord org; //создать локальный объект
// создать указатель на объект
CCoord *p_org = &org;
org.x = 0; // объект.элемент
p_org->y = 0; // указатель->элемент
return 0;
}
|