3.2.1 Классы

Класс используется для создания объектов. Основная форма имеет вид:

class имя класса

{

закрытые функции и переменные

public:

открытые функции, функции-члены и переменные

}

список объектов;//не является обязательным

Закрытые функции и переменные - члены(members) доступны только для других членов этого класса.

Открытые функции и переменные доступны для любой части программы, в которой находится класс.

Функции, объявленные внутри описания класса называются функциями членами (member functions).

Для определения функций-членов используется форма:

тип имя класса:: имя функции-члена (параметры)

{

тело функции

}

Два двоеточия после имени класса называются операцией расширения области видимости (scope resolution operator).

Определение класса только определяет тип объектов, а сами объекты не задает), мять не выделяется). Для создания объектов имя класса используется как спецификатор типа данных.

После создания объекта к открытым членам класса можно обращаться, используя операцию точка.

Пример.

#include <iostream.h>

class class1 {//объвлен сласс class1

int a; //доступна для функций членов class1

public:

int kwadrat(int b);//функция член класса class1

};

int class1::kwadrat(int b) //определение функции kwadrat()

{

a=b*b;

return a;

}

main()

{

class1 c; //создается объект с типа class1

cout<<"\n"<<c.kwadrat(3)<<"\n";//вычисление и вывод квадрата трех

return 0;

}

3.2.2 Перегрузка функций

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

Пример.

#include <iostream.h>

void k(int a);//прототип первой функции

void k(int a, float b); //прототип второй функции

void k(int a) //описание первой функции

{

cout << a <<"\n";

}

void k(int a, float b) //описание второй функции

{

cout <<a<<"\n"<< b <<"\n";

}

main()

{

k(4);//вызов первой функции

k(5, 10.2);//вызов второй функции

return 0;

}

3.2.3 Конструкторы

Для автоматической инициализации создаваемых объектов в С++ используется функция - конструктор (constructor function), которая включается в описание класса.

Функция конструктор имеет тоже имя, что и класс и не возвращает ни какого значения.

Пример:

#include <iostream.h>

// Объявление класса class1

class class1 {

int a;

public:

class1(); // Конструктор

void kwadrat();

};

// Инициализация а конструктором при создании объекта pr

class1::class1()

{

a=100;

}

//Функция возведения в квадрат и печати

void class1::kwadrat()

{

cout << a*a;

}

main()

{

class1 pr;//Создание объекта pr

pr.kwadrat(); //Вызов функции kwadrat

return 0;

}

Как видно из примера конструктор вызывается при создании объекта pr.

3.2.4 Деструкторы

Функция деструктор (destructor)вызывается при удалении объекта для освобождения ресурсов (памяти и т.д.). Она также включается в объявление класса. Перед описанием деструктора ставится значок ~.

Пример.

#include <iostream.h>

// Объявление класса class1

class class1 {

int a;

public:

class1(); // Конструктор

~class1(); //Деструктор

void kwadrat();

};

// Инициализация а конструктором при создании объекта pr

class1::class1()

{

a=100;

}

//Освобождение ресурсов деструктором

class1::~class1()

{

cout<<"Освобождение\n";

}

//Функция возведения в квадрат и печати

void class1::kwadrat()

{

cout << a*a<<"\n";

}

ain()

class1 pr;//Создание объекта pr

pr.kwadrat(); //Вызов функции kwadrat

return 0;

}

Деструктор вызывается при удалении объекта или выхода из программы.

3.2.5 Конструкторы с параметрами

Конструктору можно передать параметры. Для этого нужно добавить необходимые параметры в объявление и определение конструктора. Затем при объявлении объекта параметры задаются в качестве аргумента.

Пример:

#include <iostream.h>

class myclass {

int a;

public:

myclass(int x); // конструктор

void show();

};

myclass::myclass(int x)

{

cout << "В конструкторе\n";

a = x;

}

void myclass::show()

{

cout << a << "\n";

}

main()

{

myclass ob(4);

ob.show();

return 0;

}

Конструктор myclass имеет один параметр. Значение, передаваемое в myclass() используется для инициализации а. Аргумент 4 передается в ob(4) в качестве аргумента. Деструктор в отличие от конструктора параметров не имеет.

В данном примере конструктору мы передавали константы, но так же можно передавать переменные:

Пример:

include <iostream.h>

class myclass {

int i, j;

public:

myclass(int a, int b);

void show();

};

myclass::myclass(int a, int b)

{

i = a;

j = b;

}

void myclass::show()

{

cout << i << ' ' << j << "\n";

}

main()

{

int x, y;

cout << "Введите два целых: ";

cin >> x >> y;

// использование переменных для создания ob

myclass ob(x, y);

ob.show();

 return 0;

}

В программе рассмотрено важное свойство объектов. Они могут создаваться по мере необходимости.


Информация о работе «Основы C»
Раздел: Информатика, программирование
Количество знаков с пробелами: 200759
Количество таблиц: 5
Количество изображений: 11

Похожие работы

Скачать
20474
0
0

... . Имеет ли право на существование эта биологизаторская интерпретация экологии? Видимо, да. Она широко представлена, и с этим следует считаться. Но она не может служить концептуальной основой комплексного непрерывного экологического образования. В структуре научного знания при таком подходе не остаётся места для географической и социальной экологии, экологии человека, а сама биология превращается ...

Скачать
5443
0
0

... хотя бы стены, чтобы нас не унижали в собственном доме, до конца не растащили наше имущество, нам нужна, обладающая высоким моральным и воинским духом достойно обеспеченная армия. Однако, значение российской армии и в том, что она представляет собой, пожалуй, единственный институт в современной виртуальной России, лишенный симулякров, поскольку ней, по крайней мере, погибают реально - в бою. ...

Скачать
8522
1
2

... важные функции управления предприятием, такие как: определение задач; планирование ресурсов; оценка деятельности и мотивация персонала на основе оценки; контроль исполнения. В целом, бюджетирование решает тактические вопросы и, по существу, для стратегического управления не предназначено. Связь бюджетирования со стратегией Практика стратегического планирования западных компаний ...

Скачать
11185
0
0

... . Для этого достаточно измерить его на карте и знать масштаб карты. Компас. Научиться пользоваться компасом нетрудно. Но компас, как правило, наилучшим помощником в ориентировании становится вместе с картой. В спортивном ориентировании пользуются специальными жидкостными компасами. Они позволяют быстро и просто взять с карты нужное направление и двигаться по местности по выбранному азимуту. ...

0 комментариев


Наверх