Having this struct:
struct Coordinates
{
    int x;
    int y;
    Coordinates(int x_axis, int y_axis)
    {
        x = x_axis;
        y = y_axis;
    }
    Coordinates()
    {
        std::cout << " CALL " << std::endl;
    }
};
And having this class:
class Character
{
public:
    bool canSpeak;
    int hp;
    float gold;
    Coordinates position;
    Character();
};
I want to understand one thing (I know that the class' members initialize in the order in which they are declared). So, if I would do this:
Character::Character() : position(25, 32), canSpeak(1), hp(position.y), gold(position.x)
{
    std::cout << gold << " " << hp << std::endl;
}
Both hp and gold would contain garbage values but I would like to see the chronological axis in which this happens because before the curly brackets, all class members should be initialized (this means they do need to initialize between : and { , and if they initialize in the order in which appear, how can position.y and position.x be 'used'?
I was expecting the Coordinates::Coordinates() to be called before the Coordinates::Coordinates(int x_axis, int y_axis) in order for the compiler to be able to use position.x and position.y but this doesn't happened. So I don't understand what happens chronological.
