構造函數:
構造函數是類的成員函數,與類名同名。它有助於初始化類的對象。它可以接受參數,也可以不接受。它用於為類的對象分配內存。每當創建類的實例時都會調用它。它可以帶參數或不帶參數手動定義。一個類中可以有多個構造函數。它可以重載,但不能繼承或虛擬。有一個複製構造函數的概念,用於從另一個對象初始化一個對象。
用法:
ClassName() { //Constructor's Body }
析構函數:
與構造函數一樣,析構函數也是類的成員函數,該函數與類名同名,前麵帶有波形符 (~) 運算符。它有助於釋放對象的內存。當類的對象被釋放或刪除時調用它。在類中,始終有一個不帶任何參數的析構函數,因此不能重載。它總是以與構造函數相反的順序調用。如果一個類被另一個類繼承,並且兩個類都有析構函數,則首先調用子類的析構函數,然後調用父類或基類的析構函數。
用法:
~ClassName() { //Destructor's Body }
注意:如果我們沒有為類內的成員指定任何訪問修飾符,則默認情況下成員的訪問修飾符將為 Private。
構造函數和析構函數的示例/實現:
C++
#include <iostream>
using namespace std;
class Z
{
public:
// constructor
Z()
{
cout<<"Constructor called"<<endl;
}
// destructor
~Z()
{
cout<<"Destructor called"<<endl;
}
};
int main()
{
Z z1; // Constructor Called
int a = 1;
if(a==1)
{
Z z2; // Constructor Called
} // Destructor Called for z2
} // Destructor called for z1
輸出:
Constructor called Constructor called Destructor called Destructor called
C++中構造函數和析構函數的區別:
S. 編號 | 構造函數 | 析構函數 |
---|---|---|
1. | 構造函數有助於初始化類的對象。 | 而析構函數用於銷毀實例。 |
2. | 它被聲明為類名(參數,如果有){構造函數的主體}. | 而它被聲明為~ 類名(無參數){ }. |
3. | 構造函數可以接受參數,也可以不接受參數。 | 雖然它不能有任何參數。 |
4. | 創建類的實例或對象時會調用構造函數。 | 當類的對象被釋放或刪除時調用它。 |
5. | 構造函數用於為實例或對象分配內存。 | 而它用於釋放類對象的內存。 |
6. | 構造函數可以重載。 | 雖然不能超載。 |
7. | 構造函數的名稱與類名稱相同。 | 這裏,它的名稱也與前麵帶有平鋪(~)運算符的類名稱相同。 |
8. | 在一個類中,可以有多個構造函數。 | 在一個類中,總是有一個析構函數。 |
9. | 有一個複製構造函數的概念,用於從另一個對象初始化一個對象。 | 而這裏,沒有複製析構函數的概念。 |
10. | 它們通常按連續順序調用。 | 它們通常以與構造函數相反的順序調用。 |
相關用法
- C++ Containership和Inheritance的區別用法及代碼示例
- C++ Copysign()用法及代碼示例
- C++ CHAR_MIN用法及代碼示例
- C++ CHAR_MAX用法及代碼示例
- C++ CHAR_BIT用法及代碼示例
- C++ cos()用法及代碼示例
- C++ sin()用法及代碼示例
- C++ asin()用法及代碼示例
- C++ atan()用法及代碼示例
- C++ atan2()用法及代碼示例
- C++ acos()用法及代碼示例
- C++ tan()用法及代碼示例
- C++ sinh()用法及代碼示例
- C++ ceil()用法及代碼示例
- C++ tanh()用法及代碼示例
- C++ fmod()用法及代碼示例
- C++ acosh()用法及代碼示例
- C++ asinh()用法及代碼示例
- C++ floor()用法及代碼示例
- C++ atanh()用法及代碼示例
- C++ log()用法及代碼示例
- C++ trunc()用法及代碼示例
- C++ round()用法及代碼示例
- C++ lround()用法及代碼示例
- C++ llround()用法及代碼示例
注:本文由純淨天空篩選整理自MKS075大神的英文原創作品 Difference Between Constructor and Destructor in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。