Lors d'une déclaration d'une classe, l'appel à un constructeur est automatique, il faut donc qu'il y ait concordance entre le nombre de paramètres du ou des constructeurs et le nombre de paramètres passés à la variable lors de la déclaration.
class x {
int i,j ;
public:
x(int ii, int jj) ;
} ;
x::x(int ii,int jj) : i(ii),j(jj) {}
int main(void) {
x vx1(2,3) ; // ok
x vx1= x(3,5) ; // ok
x vx ; // declenche une erreur de compilation.
...
Le programme ci-dessus déclenche une erreur car à la déclaration de
la variable vx, le compilateur recherche une fonction constructeur sans
paramètre qui n'existe pas.