Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

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

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

Пример 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 ();

}

Использование указателя на объект

Второй способ доступа использует указатель на объект

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

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

Пример 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 <имя_класса>;

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

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

class AnyClass

{

int x;

PrevDecl * obPtr;

public:

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

{

x = X;

}

};

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

{

int y;

public:

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

};

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

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

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

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

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

#include "<имя>.h"

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



<== предыдущая лекция | следующая лекция ==>
Педагогический такт и авторитет учителя | Психоаналитические подходы к исследованию
Поделиться с друзьями:


Дата добавления: 2016-10-27; Мы поможем в написании ваших работ!; просмотров: 311 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если президенты не могут делать этого со своими женами, они делают это со своими странами © Иосиф Бродский
==> читать все изречения...

2507 - | 2379 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.