У меня возникли некоторые проблемы с пониманием использования указателей в этой программе:Что с указателями на C++?
#include<iostream.h>
class ABC
{
public:
int data;
void getdata()
{
cout<<"Enter data: ";
cin>>data;
cout<<"The number entered is: "<<data;
}
};
void main()
{
ABC obj;
int *p;
obj.data = 4;
p = &obj.data;
cout<<*p;
ABC *q;
q = &obj.data;
q->getdata();
}
Я получаю все, до следующего шага: ABC *q;
Что это делать? В моей книге говорится, что это указатель класса (он очень расплывчатый с патетической грамматикой). Но что это значит? Указатель, указывающий на адрес класса ABC?
Если это так, то следующий шаг меня смущает. q = &obj.data;
Таким образом, мы указываем этот указатель на местоположение данных, который является переменной. Как это вписывается ABC *q;
?
И последний шаг. Что делает q->getdata();
? В моей книге говорится, что это указатель на оператор-функцию члена ', но не дает никаких объяснений.
Рад помочь!
Бросьте эту книгу. – unwind
Я предполагаю, что 'q = & obj.data' равно' q = & obj'? – this
Во-первых, q является указателем на объект класса ABC, поэтому 'q = & obj'. Во-вторых, 'q-> getdata()' вызовет метод для этого экземпляра ABC – jandresrodriguez