Aren`t constructors used to initialize variable at the time of contract creation? In [common patterns](http://solidity.readthedocs.io/en/develop/common-patterns.html) section in solidity documentation, payable constructor is used for withdrawal pattern example.

```
constructor() payable {
  richest = msg.sender;
  mostSent = msg.value;
}

```

What is the significance of this cant we hard code the value or initialize it with some other function?