Переименование типов. Ключевое слово typedef
Перечислимый тип
Перечислимый тип (enumeration) – это множество поименованных целых констант Используется для улучшения читаемости программы |
enum имя_типа { список_перечисления} переменная1,…,переменнаяN; }
enum seasons {win,spr,sum,aut};
seasons s;
Оператор printf(“%d%d\n”,win,aut); выводит на экран числа 0 и 3.
Изменение порядковых номеров
enum value {one=1,two,three,ten=10,thousand=1000,next};
printf("%d %d %d %d %d\n",one,two,ten,thousand,next);
На экран будет выведено: 1 2 10 1000 1001
Операции с переменными перечислимого типа |
· Присвоение переменной типа enum другой переменной того же типа |
· Сравнение с целью выяснения равенства или неравенства |
· Арифметические операции с константами типа enum (i=ten-one) |
Ключевое слово typedefпозволяет создать новое имя для существующего типа данных Новое имя определяется в качестве дополнения к существующему типу |
typedef тип новое_имя;
Пример
typedef float balance;
balance x; // определение переменной x типа balance (float).
Класс
Принципы построения классов
Инкапсуляция | Объединение в едином объекте данных и функций, обрабатывающих эти данные |
Наследование | Наследование предполагает, что в классы могут составлять иерархию, и все характеристики класса-родителя присваиваются классу-потомку. После этого потомку добавляют новые характеристики. Иногда некоторые функции(методы) в классе-потомке переопределяются. |
Полиморфизм (многоформие) | Родственные объекты (происходящие от одного родителя) могут вести себя по-разному в зависимости от ситуации, возникающнй во время выполнения программы. |
· Класс -тип данных, определяемых пользователем · Класс включает как данные, так и код, предназначенный для выполнения действий над этими данными · Простые классы могут содержать только код или только данные · По умолчанию члены класса являются закрытыми (private-членами), поэтому ключевое private может отсутствовать · Ключевое слово public используется для объявления открытых членов класса, доступных для других частей программы · Доступ к закрытым членам класса организуется через его открытые функции · Конструктор – это специальная функция, которая является членом класса и имя которой совпадает с именем класса. Конструктор объекта вызывается при создании объекта, т. е. при выполнении инструкции объявления объекта. Выполняет функцию инициализации объекта · Деструктор – это функция, которая вызывается при разрушении объекта |
Объявление класса в общем виде
сlass имя_класса{
private:
приватные данные и функции;
protected:
защищенные данные и функции;
public:
общие данные и функции
}список объектов; // как и в определении структуры может отсутствовать
Пример
#include <iostream>
#include <conio>
using namespace std;
class Cat
{
int itsAge; // приватная часть
public:
Cat( ); // конструктор
Cat(int initialAge); // конструктор c параметром
~Cat( ); // деструктор
void SetAge(int age) {itsAge=age;}
int GetAge( ) {return itsAge;}
void Meow( ) {cout<<"Мяу\n";}
};
Cat::Cat()
{
}
Cat::Cat(int initialAge)
{
itsAge=initialAge;
}
Cat::~Cat()
{
cout <<"Destructor<<endl ";
}
int main( )
{
Cat Kiska; // конструктор без параметра создает объект Kiska
Kiska.SetAge(5);// установка переменной itsAge
cout<<"Now Kiska is "<<Kiska.GetAge()<<"years old\n";
Cat Pusik(3);// конструктор с параметром создает объект Pusik
cout<<"Now Pusik is "<<Pusik.GetAge()<<"years old\n";
Kiska.Meow();
Pusik.Meow();
Pusik.~Cat(); // деструктор в явном виде
Kiska.~Cat();
getch();
return 0;
}
Объявление функций-членов со спецификатором const
Такой функции будет запрещено изменять значения переменных-членов класса int GetAge( ) const {return itsAge;} Это правило хорошего тона программирования. |