C 建構子支援重載,而析構函式不支援。建構函數可具有不同的參數列表,而析構函數只能有一個空參數列表,因為它在銷毀類別實例時會自動調用,不需要輸入參數。
C 中函式重載是否適用於建構函式和析構函式?
引言
函數重載允許函數在名稱相同的情況下具有不同的參數清單。這允許在不同的場景中以稍微不同的方式使用同一個函數名稱。本文將探討函數重載是否適用於 C 中的建構子和析構函式。
建構子
建構子用來建立類別的實例。 C 允許針對同一個類別具有多個建構函數,每個建構函數具有不同的參數清單。這被稱為構造函數重載。例如:
class MyClass { public: MyClass() {} // 默认构造函数 MyClass(int a) {} // 带有一个 int 参数的构造函数 };
析構函數
析構函數用來銷毀類別的實例。與建構函數類似,C 也允許對同一類別具有多個析構函數,但它們只能具有一個參數列表,該參數列表必須為空。這是因為析構函數始終在類別實例被銷毀時調用,它不應接受任何參數。因此,析構函數不能重載。
實戰案例
下面的範例展示了建構函式重載:
#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中文網其他相關文章!