Используя следующую структуру,
struct A
{
A(int d1, int d2)
{
data1 = d1;
data2 = d2;
}
int data1, data2;
};
будет ли последняя строка в функции ниже разыменовывать указатель снова, или компилятор узнает, что использовал ранее разыменованный объект?
int main()
{
A* a = new A(1, 2);
//dereference a
cout << a->data1 << endl;
//dereference a again?
cout << a->data2 << endl;
}
Если нет, есть ли какие-нибудь компиляторы, которые могли бы сделать это?
Я знаю, что могу провести эксперимент, чтобы проверить свой вопрос, однако я не очень хорошо знаю язык ассемблера.