Указатели для начинающих (Pointers) - Указатели на классы

ОГЛАВЛЕНИЕ

 

 Указатели на классы

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

 class MyClass
{
public:
    int m_Number;
    char m_Character;
};

Затем вы можете определить переменную типа MyClass:

MyClass thing;

Все это вы уже знаете. А если нет, то вам стоит немного почитать про массивы. Чтобы определить указатель на MyClass вам необходимо использовать:

MyClass *thing;

...как вы и прочитали в начале статьи. Затем вы можете распределить  некоторую память и заставить данный указатель ссылаться на память:

thing = new MyClass;

Тут вы встретите следующую проблему - как же использовать указатель? Вы могли бы написать thing.m_Number, но в случае с указателями thing не является MyClass, а является указателем на него. Итак, сам thing не содержит никакой переменной с названием m_Number - он указывает на структуру, которая содержит m_Number. Поэтому мы должны использовать другие правила, и для этого точку "." заменяют на знак "->" (тире, за которым следует знак неравенства означающий "больше"). Вот пример этого:

class MyClass
{
public:
    int m_Number;
    char m_Character;
};

void main()
{
    MyClass *pPointer;
    pPointer = new MyClass;

    pPointer->m_Number = 10;
    pPointer->m_Character = 's';

    delete pPointer;
}