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

Синтаксис определения, инициализация указателя на структуру. Работа с полями структуры через указатели.

Структура программы. Директивы. Переменные и константы. | Типы данных. Преобразования типов. | Циклы и ветвления | Перегруженные функции. Встроенные функции. Рекурсивные функции. | Область видимости и класс памяти. | Объявление и инициализация одномерного и двумерного массивов. Работа с элементами массива через указатель. | Принципы ООП. Инкапсуляция. Наследование. Полиморфизм. | Конструкторы и деструкторы. Конструкторы копирования по умолчанию. | Объекты как аргументы методов и доступ к их числам. | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). |


Читайте также:
  1. ANSI_синтаксис соединения
  2. C) Работа над когнитивными структурами и неправильной атрибуцией
  3. IV. ОСОБЕННОСТИ СТРУКТУРЫ СТИМУЛОВ ДЛЯ МЕНЕДЖЕРОВ ГОСУДАРСТВЕННЫХ КОРПОРАЦИЙ
  4. IV. Практическая работа.
  5. IV. Работа над новым материалом.
  6. IV. Работа с текстами.
  7. IV. Словарная работа.

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

Если указатель указывает на объект, то доступ к членам объекта можно получить, используя операцию ->. Для доступа к членам структуры используется тот же синтаксис.

class Distance

{

private:

int feet;

public:

void showdist() { cout << feet; } // вывод информации

};

int main ()

{

Distance dist; // определяем объект типа Distance

dist.showdist (); // выводим на экран

Distance* distptr; // определяем переменную-указатель на Distance

distptr = new Distance; // создаем объект Distance

distptr->showdist (); // выводим информацию

}

distptr->showdist (); - это то же самое что (*distptr).getdist (); //разыменование указателя

Если вы не хотите работать с указательной переменной, а хотите использовать обычную переменную, то можно использовать следующий подход:

Distance& dist = *(new Distance); // создаем объект типа Distance

dist.showdist(); // доступ к членам класса осуществляем через оператор "."

Используя ссылку, мы определили dist как объект класса Distance и определили его равным *(new Distance). Теперь мы можем ссылаться на члены объекта dist, используя операцию точки, а не операцию ->.

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

struct link // один элемент списка

{

int data; // некоторые данные

link* next; // указатель на следующую структуру

};

Однако хотя класс может содержать в себе указатель на такой же объект, сам этот объект он содержать в себе не может:

class sampleclass { sampleclass obj; /* так нельзя */ };

Это справедливо как для классов, так и для структур.


Дата добавления: 2015-08-17; просмотров: 84 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Синтаксис определения структуры, структурной переменной. Доступ к полям структуры, присвоение структурных переменных.| Определение функции. Передача аргументов и возврат значения по значению, ссылке и указателю. Аргументы по умолчанию. Константы аргументов функции.

mybiblioteka.su - 2015-2024 год. (0.007 сек.)