Technically speaking, constructors have no name. This may seem strange at first because you define a constructor for class X as X::X(). However, this construct is not the name of a constructor; it’s only a syntactic construct that enables you to declare and define a constructor. A constructor is a special member function that you can never call explicitly. It’s called implicitly when you instantiate an object. However, unlike ordinary functions, you cannot take its address or call it explicitly.