understanding struct ?

I need some help understanding the following struct code.
It is originally taken from a MS Visual C project and i need
similar code to run on linux.
Mostly clear up to the last 2 lines of the struct.

typedef unsigned char BYTE;

struct Pixel {
      BYTE r;
      BYTE g;
      BYTE b;
      Pixel(BYTE grey): r(grey), g(grey), b(grey) {}
      Pixel() : r(0), g(0), b(0xFF) {}
};

The last two lines are constructors. The function the same way they do in a class.

When you create an instance of a struct without a constructor, you need to initialize all the fields of the structure.

With a constructor, the field initialization is handled.

The two constructors allow you to initialize all the fields with the same value, or with default values (0, 0, 255).