That's an initializer list. It calls constructors for the data members from the : till the "constructor code" (typically started with {). When there's more constructors called, they are delimited with commas.
Array(unsigned arraySize): data(0), size(arraySize) {}
Corresponds to:
1 2 3 4 5
Array(unsigned arraySize)
{
data = 0;
size = arraySize;
}
or even: Array(unsigned arraySize): data(0) {size = arraySize;}
Generally, use initializer lists whenever possible, since they are a lot more clear in what they try to achieve.