указатель_на_объект –> имя_компонента

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

Пример 8.

void main()

{

AnyClass A; // создание объекта

AnyClass *pA=&A; // создание указателя на объект класса AnyClass

// и его инициализация адресом переменной A

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

A.SetX(5);

}

Какой же метод доступа к членам класса работает быстрее? "Точка" работает в точности так же, как оператор "->", за исключением того, что имени объекта предшествует неявно сгенерированный компилятором оператор адреса "&". Таким образом, инструкцию ObjName.FuncName();

компилятор трактует, как (&ObjName) -> FuncName();

Пример 9.

void main()

{

complex *point = new complex;

point –>set(1.24, 2.3);// изменение значений данных-членов x и y

// в объекте, на который указывает point

point –>print();

delete point; // удаление объекта из кучи

}

В первой строке тела функции выполняются следующие действия:

§ объявляется указатель point на объект класса complex,

§ выделяется память для объекта класса complex в куче,

§ создаётся объект класса complex,

§ указатель инициализируется адресом выделенной памяти.

 

!!!Доступ к членам-данным возможен, если они объявлены как общедоступные. В ООП обычно не допускается прямой доступ к данным, это осуществляется через соответствующие функции.

 

Неполное объявление класса

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

class <имя_класса>;

Рассмотрим пример.

classPrevDecl;// неполное объявление класса PrevDecl

classAnyClass

{

int x;

PrevDecl*obPtr;

public:

void Set(int X)// метод класса AnyClass

{

x=X;

}

};

classPrevDecl// полное объявление класса PrevDecl

{

int y;

public:

void print();// метод класса PrevDecl

};

Нельзя создать объект не полностью определенного класса. Попытка создания такого класса приводит к ошибке компиляции.

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

Класс, который мы создали можно разместить в том же файле, что и основная программа, которая содержит функцию main()и использует этот класс. Но такое решение целесообразно только в том случае, если ваша программа невелика по объёму. Хорошим стилем программирования считается размещение каждого класса в отдельном файле и дальнейшее подключение его к основной программе с помощью директивы #include.

Более того, синтаксис языка C++ предполагает размещение класса в двух файлах – в заголовочном файле c расширением *.hи в связанном с ним исполняемым файлом с расширением *.cpp. Оба файла должны иметь одно и то же имя. Как правило, это имя совпадает с именем класса. В заголовочном файле размещают объявление класса, а в исполняемом файле – описание функций-членов класса. Кроме того, необходимо позаботится о связи файлов, и предотвратить возможность повторного включения класса в код программы при компиляции.

Теперь мы можем дополнять класс объявлениями новых данных-членов и функций-членов в файле <имя>.h. Реализация функций-членов мы будем помещать в файл <имя>.cpp. Для того, чтобы использовать класс, его нужно подключить к файлу, в котором мы хотим создать объекты типа <имя> с помощью директивы:

#include "<имя>.h"

Имя файла заключено в двойные кавычки. Это означает, что компилятор должен искать файл в папке проекта.








Дата добавления: 2016-10-17; просмотров: 578;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.