Переименование типов. Ключевое слово 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;} Это правило хорошего тона программирования.