ВУЗ:
Составители:
Рубрика:
Как и функцию Point,новые функции можно определить вне
структуры либо до ее определения,либо после.В первом случае
необходимо определениям функций предпослать описание струк-
туры:
struct Point;
Разделенные физически в исходной программе тела функций-
членов(тела методов) и поля данных объекта на самом деле ис-
пользуют одну и ту же область действия.Этим объясняется тот
факт,что в операторе return x функции GetX() переменная x
записана без указателя объекта this.Это происходит потому,
что x принадлежит тому же объекту, что и эта функция:
struct Point VarPoint(0,0,true);/*-объект VarPoint; */
cout<<"\n"<<VarPoint.Getx();
Всякий раз,когда вызывается функция-член для какого-либо
объекта,этой функции передается неявный параметр - 32-битовый
указатель на данный объект.Заметим,что в функции Point для
последнего варианта определения структуры была необходимость
в явном использовании указателя this,так как поля данных и
параметры имеют одинаковые имена:x,y и Visible соответствен-
но.
Определив структуру Point и набор функций-членов,обеспечи-
вающих доступ к ее полям,мы не получили гарантии,что програм-
мист не будет обращаться к этим же полям с помощью других,
написанных им самим функций,так как для таких типов данных,
как структуры,ни на стадии компиляции,ни на стадии выполнения
подобных проверок не делается.Структура - это открытый тип
данных.К такому же открытому типу данных относятся и объедине-
ния.
Для обеспечения защиты полей данных и объединения их с фун-
кциями доступа в язык C++ введен новый тип данных - класс,в
котором,как правило,присутствуют две части:защищенная часть и
открытая часть,причем как в той,так и в другой части могут
быть определены как поля данных,так и функции,использующие
14
Как и функцию Point,новые функции можно определить вне структуры либо до ее определения,либо после.В первом случае необходимо определениям функций предпослать описание струк- туры: struct Point; Разделенные физически в исходной программе тела функций- членов(тела методов) и поля данных объекта на самом деле ис- пользуют одну и ту же область действия.Этим объясняется тот факт,что в операторе return x функции GetX() переменная x записана без указателя объекта this.Это происходит потому, что x принадлежит тому же объекту, что и эта функция: struct Point VarPoint(0,0,true);/*-объект VarPoint; */ cout<<"\n"<
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »