A default constructor accepts no arguments and usually defined with no arguments. For example,

class Point
{
    int m_x{};
    int m_y{};
 
public:
    Point() // default constructor
        : m_x{1}, m_y{1} // can be omitted. let data members be value initialized.
    {
        std::cout << "Default constructor Point()\n";
    }
 
    void print() const
    {
        std::cout << "{" << m_x << ", " << m_y << "}\n";
    }
};
 
int main(int argc, char const *argv[])
{
    const Point point{};
 
    point.print();
    return 0;
}

Point is object is created with default constructor Point() which initializes data members with values (can be omitted and let data members be value initialized).

Classes with default constructors can be value initialized or default initialized as shown below:

const Point point; // default initialized
const Point point{}; // value initialized

Both of the initialization would invoke default constructors. Since we are using value initialization to initialize aggregators, it is recommended to stick with value initialization for the classes for consistency.

References

  1. https://www.learncpp.com/cpp-tutorial/default-constructors-and-default-arguments/