Вход/Регистрация
Интернет-журнал "Домашняя лаборатория", 2007 №10
вернуться

Журнал «Домашняя лаборатория»

Шрифт:

while(My_stack.top!= -1)

{

cout << pop(&My_stack);

}

cout << end1;

}

Пример 12

Структуры в C++ могут иметь в качестве своих членов(в предыдущем примере это s и top) не только переменные но и функции. Для этого объявление функций вставляется в объявление структуры, например предыдущий пример стека можно объявить так:

struct stack

{

char s [1000];

int top;

void reset

{

top = -1;

}

void push(char c)

{

++top;

s[top] = c;

}

char pop

{

– -top;

return s[top];

}

};

Функции-члены записаны так же как обычные функции. Отличие лишь в том что теперь они могут использовать переменные и функции "как есть", им не нужно передавать в качестве параметров такие переменные как s и top. Обращаются к функциям-членам так же как и к обычным членам: с помощью оператора".", а указатели с помощью оператора "->". Приведем несколько фрагментов кода:

stack My_stack;

My_stack.reset;

stаск * pMy_stack = &My_stack;

pMy_stack->push('A');

Переменные структур и классов (позже мы узнаем что это) принято называть — "объектами", с этой минуты и мы их будем так называть.

Пример 13

Функции-члены, которые определены внутри структуры, являются встраиваемыми. Обычно, только маленькие, часто используемые функции определяются внутри структуры (как в предыдущем уроке). Что бы определить функцию-член вне структуры используется оператор Давайте это наглядно покажем, переделав структуру из предыдущего урока.

struct stack

{

char s [1000];

int top;

void reset;

void push(char c);

char pop;

};

void stack::reset

{

top = -1;

}

void stack::push(char c)

{

++top;

s[top] = c;

}

char s tack::pop

{

– -top;

return s[top];

}

Запись void stack::reset говорит, что функция reset принадлежит структуре stack. Благодаря оператору"::" мы можем иметь одинаковые имена функций для разных типов структур.

Пример 14

В объектно-ориентированном программировании существует такое понятие как механизм сокрытия данных. Давайте возьмем случай когда вы покупаете магнитофон, то вам доступны только те его части которые необходимы для работы с ним (кнопочки, экранчики и т. д.), такие части как провода, магнитные головки и т. д. вам не доступны. В структурах и классах (позже мы узнаем что это такое) сокрытие данных осуществляется с помощью ключевых слов public (открытый), private (закрытый) и protected (защищенный). Закрытые члены в программе недоступны, а открытые наоборот доступны. Внутри структуры после ключевого слова private, все члены ограничены доступом. Закрытыми членами могут пользоваться только функции-члены этой структуры. Открытые члены могут использоваться и вне структуры.

Напишем структуру, характеризующую квартиру. В ней будут такие члены как number (номер квартиры), count_room (количество комнат), floor (этаж), area (площадь), price (цена), status (приватизирована или нет), эти члены мы сделаем закрытыми, а для доступа к ним напишем функции.

struct kwart

{

public:

int GetNumber;

int GetCountRoom ;

int GetFloor;

int GetArea;

int GetPrice;

bool GetStatus;

void SetNumber(int);

void SetCountRoom(int);

void SetFloor(int);

void SetArea(int);

void SetPrice(int);

void SetStatus(bool);

private:

int number;

int count_room;

int floor;

int area;

int price;

bool status;

};

int kwart::GetNumber

{

return number;

}

int kwart::GetCountRoom

{

return count_room;

}

int kwart::GetFloor

{

return floor; int kwart::GetArea

{

return area; int kwart::GetPrice

{

return price;

}

bool kwart::GetStatus

{

return status;

}

void kwart::SetNumber(int num)

{

number = num;

void kwart::SetCountRoom(int count)

}

count_room = count;

}

void kwart::SetFloor(int num)

  • Читать дальше
  • 1
  • ...
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: