The "child" class constructor can't "pass a value" to it's "parent" class constructor: the syntax of the parameterised constructor just seems to imply that.
child(int x) : father(x)
What it actual does is call the "parent" constructor with the parameter value before the "child" constructor begins to execute instead of calling the default parameterless "parent" constructor. It's just a way to allow you to correctly construct both classes from your code when you do this:
Constructors cannot start executing until the base class constructor(s) are complete, or any calls to inherited methods could fail.