Предположим, что я определяю некоторый класс:
class Pixel {
public:
Pixel(){ x=0; y=0;};
int x;
int y;
}
Затем напишите некоторый код, используя его. Зачем мне делать следующее?
Pixel p;
p.x = 2;
p.y = 5;
Из мира Java я всегда пишу:
Pixel* p = new Pixel();
p->x = 2;
p->y = 5;
Они в основном делают то же самое, не так ли? Один находится в стеке, а другой находится в куче, поэтому мне придется удалить его позже. Есть ли принципиальная разница между этими двумя? Почему я должен выбирать один за другим?