Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_02_КЛАССЫ.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
80.9 Кб
Скачать

Определение функции-члена класса

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

<тип_результата_функции> <имя_класса> :: <имя_функции> (<список_параметров>)

{

<тело_функции>

}

Примеры определения функций-членов GetX( ) и SetX( ) класса AnyClass:

int AnyClass :: GetX()

{

return x;

}

void AnyClass :: SetX(int X)

{

x=X;

}

Если тело функции-члена класса невелико по объёму, как в приведённом выше примере, то описание функции удобно привести в объявлении класса в соответствии со следующим синтаксисом:

<тип_результата> <имя_функции> (<список_параметров>) {<тело_функции>}

В этом случае чтение и редактирование класса упростится, и он будет иметь следующий вид:

Пример 4.

class AnyClass

{

Int X; // закрытое данное-член класса

public: // открытые члены класса

int GetX()

{return x;} // функция возвращает значение данного-члена класса x

void SetX(int X)

{x=X;} // функция изменяет значение данного-члена класса x

}

Пример 5. Функции-члены класса complex можно описать таким образом:

double real()

{

return(re);

}

double imag()

{

return(im);

}

void set(double x, double y)

{

re = x;

im = y;

}

void print()

{

cout<<"re = "<<re<<endl;

cout<<"im = "<<im;

}

Создание объекта класса

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

Для описания объекта класса (экземпляра класса) используется конструкция

имя_класса имя_объекта;

В определяемые объекты входят данные, соответствующие членам − данным класса. Функции-члены класса позволяют обрабатывать данные конкретных объектов класса. Обращаться к данным объекта и вызывать функции для объекта можно двумя способами. Первый с помощью «квалифицированных» имен:

имя_объекта.имя_данного

имя_объекта.имя_функции

Например: для создания объектов класса AnyClass

Пример 6.

void main()

{

AnyClass obA, оbB; // создание двух объектов

obA.SetX(1); // изменение значение данного-члена x в объекте obA

obB.SetX(3); // изменение значение данного-члена x в объекте obB

}

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

Эти операторы устанавливают значения переменной x в объектах obA и оbB . Каждый объект содержит собственную копию всех данных, объявленных в классе. Это значит, что значение переменной x в obA отлично от значения этой переменной в оbB.

Пример 7.

void main()

{

complex x1, x2;

x1.set(1.8, 3.2);

x2.set(5.1, 1.7);

x1.print();

x2.print();

}