П.8.2 Public
П. 8.1 Private
Директивы Private, Public, Protected.
Классы и модули.
Пример использования указателя this.
В методе объекта на поля объекта, для которого она была вызвана, можно ссылаться непосредственно. Например:
class x {
int m;
public:
int Get_m() { return m; }
};
x aa;
x bb;
void main()
{
int a = aa.Get_m();
int b = bb.Get_m();
// ...
}
В первом вызове метода Get_m(), m относится к aa.m, а во втором - к bb.m.
Указатель на объект, для которого вызван метод, является скрытым параметром метода. На этот неявный параметр можно ссылаться явно как на this. В каждом метода класса x указатель this неявно описан как
x* this;
и инициализирован так, что он указывает на объект, для которого была вызван метод. this не может быть описан явно, так как это ключевое слово. Класс x можно эквивалентным образом описать так:
class x {
int m;
public:
int Get_m() { return this->m; }
};
При ссылке на поля использование this излишне. Главным образом this используется при написании методов, которые манипулируют непосредственно указателями.
В языке С++ модули используют преимущественно для создания библиотек, процедур, функций и классов, и затем эти библиотеки могут использоваться в программах. Принцип скрытия информации, которая поддерживается модулем, позволяет создавать надежные и легко модифицируемые программы.
*.cpp – программная реализация
*.h – интерфейс, файл заголовков
Разделённость описания классов и реализации их методов соответствует оформлению в виде модуля.
Рекомендуется сначала проделать описание всех классов, а потом описание методов.
Директивы private и public называются спецификаторами доступа. Спецификатор private означает, что элементы данных и элементы-функции, размещенные под ним, доступны только функциям-элементам данного класса. Это так называемый закрытый доступ.
Спецификатор public означает, что размещенные под ним элементы доступны как данному классу, так и функциям других классов и вообще любым функциям программы через представитель класса.
Есть еще спецификатор защищенного доступа protected, означающий, что элементы в помеченном им разделе доступны не только в данном классе, но и для функций-элементов классов, производных от него.
class obj{
Private:
Приватные (закрытые) поля;
Приватные методы;
Public:
Общедоступные поля;
Общедоступные методы;
}
class tlocation {
public:
int GetX() { return x };
int GetY() { return y };
Private:
Int x, y;
void Init(int InitX, int InitY);
}
{доступ к полям x, y и методу Init получить не возможно}
void tlocation::Init(int InitX, int InitY){
x= InitX;
y= InitY;
}
class tlocation {
Private:
Int x, y;
Init( )
Public:
Int GetX();
Int GetY();