什麼是構造器(constructor)?
構造函數是初始化類對象的類的成員函數。在C ++中,當對象(類的實例)創建時,將自動調用構造函數。它是該類的特殊成員函數。
構造函數與普通成員函數有何不同?
構造函數與以下方式的常規函數不同:
- 構造函數與類本身具有相同的名稱
- 構造函數沒有返回類型
- 創建對象時會自動調用構造函數。
- 如果我們沒有指定構造函數,C ++編譯器會爲我們生成一個默認構造函數(不需要參數並且有一個空體)。
構造函數的類型
- 默認構造函數,默認構造函數是不帶任何參數的構造函數。它沒有參數。
// Cpp program to illustrate the
// concept of Constructors
#include <iostream>
using namespace std;
class construct {
public:
int a, b;
// Default Constructor
construct()
{
a = 10;
b = 20;
}
};
int main()
{
// Default constructor called automatically
// when the object is created
construct c;
cout << "a: " << c.a << endl
<< "b: " << c.b;
return 1;
}
輸出:
a:10
b:20
注意:即使我們沒有顯式定義任何構造函數,編譯器也會自動隱式提供默認構造函數
2. 參數化構造函數:可以將參數傳遞給構造函數。通常,這些參數有助於在創建對象時初始化對象。要創建參數化構造函數,只需像對任何其他函數一樣添加參數。定義構造函數的主體時,請使用參數初始化對象。
// CPP program to illustrate
// parameterized constructors
#include <iostream>
using namespace std;
class Point {
private:
int x, y;
public:
// Parameterized Constructor
Point(int x1, int y1)
{
x = x1;
y = y1;
}
int getX()
{
return x;
}
int getY()
{
return y;
}
};
int main()
{
// Constructor called
Point p1(10, 15);
// Access values assigned by constructor
cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();
return 0;
}
輸出
p1.x = 10,p1.y = 15
在參數化構造函數中聲明對象時,必須將初始值作爲參數傳遞給構造函數。對象聲明的正常方式可能不起作用。可以顯式或隱式調用構造函數。
實施例e =實施例(0,50); //明確的電話
例e(0,50); //隱含的電話
參數化構造函數的使用:
- 它用於在創建時使用不同的值初始化不同對象的各種數據元素。
- 它用於重載構造函數。
我們可以在一個類中擁有多個構造函數嗎?
是的,它被稱爲構造函數重載。
複製構造函數:複製構造函數是一個成員函數,它使用同一個類的另一個對象初始化對象。關於複製構造函數的詳細文章。