C コンストラクターはオーバーロードをサポートしますが、デストラクターはサポートしません。コンストラクターはさまざまなパラメーター リストを持つことができますが、デストラクターは空のパラメーター リストのみを持つことができます。これは、入力パラメーターなしでクラス インスタンスを破棄するときに自動的に呼び出されるからです。
# C での関数のオーバーロードはコンストラクターとデストラクターに適用されますか?
#はじめに
関数のオーバーロードを使用すると、関数に同じ名前の異なるパラメーター リストを持たせることができます。これにより、同じ関数名を異なるシナリオでわずかに異なる方法で使用できるようになります。この記事では、関数のオーバーロードが C のコンストラクターとデストラクターに適用されるかどうかを検討します。Constructor
Constructor は、クラスのインスタンスを作成するために使用されます。 C では、同じクラスに対して、それぞれが異なるパラメーター リストを持つ複数のコンストラクターを許可します。これはコンストラクターのオーバーロードと呼ばれます。例:class MyClass { public: MyClass() {} // 默认构造函数 MyClass(int a) {} // 带有一个 int 参数的构造函数 };
Destructor
デストラクターは、クラスのインスタンスを破棄するために使用されます。コンストラクターと同様に、C では同じクラスに対して複数のデストラクターも許可されますが、パラメーター リストは 1 つしか持てず、空にする必要があります。これは、クラス インスタンスが破棄されるときにデストラクターが常に呼び出され、パラメーターを受け入れてはいけないためです。したがって、デストラクターをオーバーロードすることはできません。実践的なケース
次の例は、コンストラクターのオーバーロードを示しています。#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; }
結論
コンストラクターは次のとおりです。オーバーロードされますが、デストラクターはオーバーロードできません。デストラクターはクラスインスタンスが破棄されるときに常に呼び出され、パラメーターを受け入れるべきではないためです。以上がC++ 関数のオーバーロードはコンストラクターとデストラクターに適用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。