c++ указатели на объект

Вопрос такой, зачем и что значит указатель типа собственный объект/класс?

class A{
};

A* ptrA;

И что я могу делать с этим указателем? Не судите строго я новичок))


Ответы (1 шт):

Автор решения: maestro

В вашем примере сделать практически ничего нельзя, так как класс пустой. Можно только его инициализировать, но толку от этого нет. Для примера создадим в классе один публичный метод и одно публичное поле.

class A{
public:
    int i;
    int f(){
        return i;
    }
};

Пусть у нас есть указатель на тип A:

A *ptrA;

Пока он не инициализирован, поэтому обращаться к нему нельзя. Но его можно инициализировать. Например, с помощью вновь созданного оператором new объекта:

ptrA = new A;

Теперь ptrA содержит валидный объект класса A, и можно обращаться ко всем его открытым членам:

int i1 = ptrA->i;
int i2 = ptrA->f();

Если объект больше не нужен, его можно удалить:

delete ptrA;

Оператор delete вызывает деструктор класса и освобождает занятую им память. После этого указатель становится недействительным. К членам класса A по указателю ptrA обращаться больше нельзя.

Инициализировать этот указатель можно и иначе. Допустим, у нас уже есть где-то созданный объект класса A. Тогда можно инициализировать этот указатель адресом этого объекта:

A a;
A *ptrA = &a;

Здесь ptrA указывает на объект a. К его членам можно обращаться как с помощью переменной a и оператора "точка", так и с помощью переменной ptrA и оператора "стрелка".

→ Ссылка