КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Имя_объекта.имя_функции
Имя_объекта.имя_данного Например: для создания объектов класса 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 (); } Использование указателя на объект Второй способ доступа использует указатель на объект указатель_на_объект –> имя_компонента Доступ к элементам данных класса можно получить с помощью указателя на объект этого класса. Следующий пример это иллюстрирует. Пример 8. void main () { AnyClass A; // создание объекта AnyClass * pA =& A; // создание указателя на объект класса AnyClass // и его инициализация адресом переменной A pA -> SetX (1); // изменение значение данного-члена x в объекте A } Какой же метод доступа к членам класса работает быстрее? "Точка" работает в точности так же, как оператор " -> ", за исключением того, что имени объекта предшествует неявно сгенерированный компилятором оператор адреса " & ". Таким образом, инструкцию 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" Имя файла заключено в двойные кавычки. Это означает, что компилятор должен искать файл в папке проекта.
Дата добавления: 2014-01-05; Просмотров: 271; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |