#include <iostream>
class Drawable
{
public:
int x;
int y;
virtual void move() {};
Drawable()
{
x = 0;
y = 0;
}
};
class Ball : public Drawable
{
public:
Ball() {}
void move()
{
x += 1;
y += 1;
}
};
int main()
{
Drawable *ball = new Ball();
Drawable* drawableArray1[1];
drawableArray1[0] = ball;
Drawable* drawableArray2 = new Drawable[1];
drawableArray2[0] = *ball;
std::cout << drawableArray1[0]->x << std::endl; // 0
std::cout << drawableArray2[0].x << std::endl; // 0
ball->move();
std::cout << drawableArray1[0]->x << std::endl; // 1
std::cout << drawableArray2[0].x << std::endl; // 0
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRHJhd2FibGUKewpwdWJsaWM6CiAgICBpbnQgeDsKICAgIGludCB5OwoJdmlydHVhbCB2b2lkIG1vdmUoKSB7fTsKCURyYXdhYmxlKCkKCXsKCQl4ID0gMDsKCQl5ID0gMDsKCX0KfTsKCmNsYXNzIEJhbGwgOiBwdWJsaWMgRHJhd2FibGUKewpwdWJsaWM6CglCYWxsKCkge30KCXZvaWQgbW92ZSgpCgl7CgkJeCArPSAxOwoJCXkgKz0gMTsKCX0KfTsKCmludCBtYWluKCkKewoJRHJhd2FibGUgKmJhbGwgPSBuZXcgQmFsbCgpOwoKCURyYXdhYmxlKiBkcmF3YWJsZUFycmF5MVsxXTsKCWRyYXdhYmxlQXJyYXkxWzBdID0gYmFsbDsKCglEcmF3YWJsZSogZHJhd2FibGVBcnJheTIgPSBuZXcgRHJhd2FibGVbMV07CglkcmF3YWJsZUFycmF5MlswXSA9ICpiYWxsOwoKCXN0ZDo6Y291dCA8PCBkcmF3YWJsZUFycmF5MVswXS0+eCA8PCBzdGQ6OmVuZGw7CQkvLyAwCglzdGQ6OmNvdXQgPDwgZHJhd2FibGVBcnJheTJbMF0ueCA8PCBzdGQ6OmVuZGw7CQkvLyAwCgoJYmFsbC0+bW92ZSgpOwoKCXN0ZDo6Y291dCA8PCBkcmF3YWJsZUFycmF5MVswXS0+eCA8PCBzdGQ6OmVuZGw7CQkvLyAxCglzdGQ6OmNvdXQgPDwgZHJhd2FibGVBcnJheTJbMF0ueCA8PCBzdGQ6OmVuZGw7CQkvLyAwCgoJcmV0dXJuIDA7Cn0=