c++ указатели на объект
Вопрос такой, зачем и что значит указатель типа собственный объект/класс?
class A{
};
A* ptrA;
И что я могу делать с этим указателем? Не судите строго я новичок))
Ответы (1 шт):
В вашем примере сделать практически ничего нельзя, так как класс пустой. Можно только его инициализировать, но толку от этого нет. Для примера создадим в классе один публичный метод и одно публичное поле.
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 и оператора "стрелка".