В данном примере определение класса почти идентично определению структур. Есть только два отличия: в заголовке вместо ключевого слово struct стоит class. Второе - в первой строке определения класса стоит public с двоеточием
Спецификатор доступа public
Данный спецификатор по умолчанию используется в структурах. Чтобы использовать его в классах нужно объявлять его явно.
Спецификатор public позволяет переменным/объектам созданным на основе данной структуры/класса получить доступ к полям.
public:
Vector () : x(0),y(0),z(0)
{}
Vector (int vx,int vy,int vz) : x(vx),y(vy),z(vz)
{}
void showVector()
{
cout<<x<<":"<<y<<":"<<z<<"";
}
void showProizVector()
{
cout<<x+y+z<<"";
}
Vector operator+(Vector)const;
Vector operator%(Vector)const;
Vector operator*(Vector)const;
double alpha();
};
Сокрытие данных
Рассмотрим пример:
class Vector
{
private:
int x;
int y;
int z;
public:
Vector () : x(0),y(0),z(0)
{}
Vector (int vx,int vy,int vz) : x(vx),y(vy),z(vz)
{}
void showVector()
{
cout<<x<<":"<<y<<":"<<z<<"";
}
void showProizVector()
{
cout<<x+y+z<<"";
}
Vector operator+(Vector)const;
Vector operator%(Vector)const;
Vector operator*(Vector)const;
double alpha();
};
У нас нет доступа к переменным x,y,z. Но они доступны внутри класса. Метод showVector также имеет к ним доступ, так как он является методом класса Vector.
Теперь, изменить x и y можно только с помощью метода showVector. x и y скрыты. И это очень правильно. Понять, почему это правильно, мы сможем не скоро - только когда начнём работать с большими классами.