Объектно-ориентированный язык программирования С++ в примерах. Сивохин А.В. - 14 стр.

UptoLike

Составители: 

Как и функцию 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"<