I have the following classes:

```
class ArithmeticExpression
{
public:
    ArithmeticExpression(std::string expr);
}

class Command
{
public:
    Command(){};
    //this is a virtual class
}

class CommandAssign : public Command
{
private:
    ArithmeticExpression expr;

public:
    CommandAssign();
    CommandAssign(ArithmeticExpression);
}

```

Now when I try to write the constructor for the CommandAssign class as in:

```
CommandAssign::CommandAssign(ArithmeticExpression expr)
    :Command()
{
    this -> expr = ArithmeticExpression(expr.getExpr());
}

```

I get the error: 

no matching function for call to ‘ArithmeticExpression::ArithmeticExpression()’
 :Command()

Apparently I can fix that by adding an empty constructor in ArithmeticExpression class that does not do anything. What is it so special about this empty constructor that makes it work? I do not explicitly call anywhere. Do you always need to define an empty constructor in C++?

I wanted to emphasize that although from the title it seems that my question is similar to the one some users suggested as being a duplicate of, the answer I was looking for is NOT there. I was simply trying to understand what happens when a constructor is called and how to avoid defining a useless default constructor, which I knew already is not automatically defined by the compiler in the case where I define one with parameters.