Home > Article > Backend Development > Does C++ function overloading apply to constructors and destructors?
C constructors support overloading, but destructors do not. Constructors can have different parameter lists, while destructors can only have an empty parameter list because it is automatically called when destroying a class instance without input parameters.
# Does function overloading in C apply to constructors and destructors?
Introduction
Function overloading allows functions to have different parameter lists with the same name. This allows the same function name to be used in slightly different ways in different scenarios. This article explores whether function overloading applies to constructors and destructors in C.
Constructor
Constructor is used to create an instance of a class. C allows multiple constructors for the same class, each with a different parameter list. This is called constructor overloading. For example:
class MyClass { public: MyClass() {} // 默认构造函数 MyClass(int a) {} // 带有一个 int 参数的构造函数 };
Destructor
The destructor is used to destroy instances of a class. Similar to constructors, C also allows multiple destructors for the same class, but they can only have one argument list, which must be empty. This is because the destructor is always called when a class instance is destroyed and it should not accept any parameters. Therefore, destructors cannot be overloaded.
Practical case
The following example shows constructor overloading:
#include <iostream> class Shape { public: Shape() {} // 默认构造函数 Shape(int width) : m_width(width) {} // 带有一个 int 参数的构造函数 private: int m_width; }; int main() { Shape s1; // 调用默认构造函数 Shape s2(5); // 调用带有一个 int 参数的构造函数 std::cout << s2.m_width << std::endl; // 输出 5 return 0; }
Conclusion
Constructors can be overloaded, but destructors cannot. Because destructor is always called when a class instance is destroyed and should not accept any parameters.
The above is the detailed content of Does C++ function overloading apply to constructors and destructors?. For more information, please follow other related articles on the PHP Chinese website!