C ++中的參數化構造函數:工作與示例

已發表: 2021-05-27

目錄

什麼是構造函數?

構造函數是類的成員函數,用於初始化類中的對象。 C++中,當創建作為類實例的對象時,會自動調用構造函數。 因此,構造函數是類的特殊成員函數。

什麼是參數化構造函數?

參數可以傳遞給構造函數。 創建對象時,這些參數有助於初始化對象。在 C++ 中創建參數化構造函數,我們可以將參數添加到函數,就像它可以添加到任何其他函數一樣。 當定義構造函數的主體時,參數用於初始化對象。

C++中參數化構造函數的語法

類名_of_class{

訪問說明符(公共/受保護/私有):

成員變量

成員函數

民眾:

name_of_class(variables){ //構造函數代碼

}

// 其他函數和變量

}

語法包括具有 name_of_class,後跟包含成員函數和成員變量的訪問說明符。 所有這些都包含在構造函數代碼中,這意味著它可以在構造函數的主體中調用。

另請閱讀: C++ 的開源項目

C++ 中的參數化構造函數示例

#include <iostream>

使用命名空間標準;

類示例

{

私人的:

整數a,b;

民眾:

// 參數化構造函數

示例(int a1,int b1)

{

a = a1;

b = b1;

}

整數 getA()

{

返回一個;

}

int getB()

{

返回 b;

}

};

主函數()

{

// 調用構造函數

示例 e1(5, 10);

cout << “e1.a = ” << e1.getA() << “, e1.b = ” << e1.getB();

返回0;

}

輸出

說明:私有變量 a 和 b 在類 Example 中聲明。 使用函數 Example 聲明參數化構造函數。 它包括兩個方法getA() 和getB()。 在主類中,調用構造函數,並分配構造函數的訪問值。

C++ 中的參數化構造函數是如何工作的?

一個對像被初始化,它保存著值或對象將處理或包含的細節和參數,只要定義了 C++中的參數化構造函數。 然後可以將參數傳遞給該對象。 該過程與將值傳遞給函數非常相似。 它也類似於將參數化值傳遞給對象。

使用參數初始化構造函數主體中定義的對象。 每當聲明參數化構造函數時,這些值都應作為參數傳遞給構造函數。 這些構造函數可以顯式或隱式調用。 對象聲明的常規方式不起作用。

注意:呼叫類型-

  1. 顯式調用- Example e1= Example(0,10)
  2. 隱式調用 - 示例 e1(0,10)

結帳:面向初學者的 C++ 項目創意

C ++中參數化構造函數的用途是什麼?

參數化構造函數的使用如下:

  • 構造函數重載
  • 用於在初始化/創建不同對象時為不同對象的各種數據元素分配不同的值

另一個例子:

1.計算矩形面積的程序

#include <iostream>

使用命名空間標準;

// 聲明一個類

類矩形{

私人的:

雙倍長度;

雙倍寬度;

民眾:

// 創建參數化構造函數

矩形(雙 len,雙 brt){

//初始化私有變量

長度 = 長度;

寬度 = brt;

}

雙計算面積(){

返回長度 * 寬度;

}

};

int main() {

// 創建對象並初始化數據成員

矩形 rect1(10, 8.6);

矩形 rect2(8.5, 6);

cout << “矩形 1 的面積:” << rect1.calculateArea() << endl;

cout << “矩形 2 的面積:” << rect2.calculateArea() << endl;

返回0;

}

輸出

說明:在這個例子中,我們創建了一個帶兩個參數的參數化構造函數 rectangle():double len 和 double bdt。 這些參數包含用於初始化成員變量長度和寬度的值。 當我們創建 Rectangle 類的對象時,我們將成員變量的值作為參數傳遞。 我們可以在成員變量初始化的時候用calculateArea()函數計算面積。

1. 顯示學生成績

#include <iostream>

使用命名空間標準;

班級學生{

民眾:

int std_id;//數據成員

string std_name;//也是實例變量

浮動標準標記;

學生(int i,字符串 a,float b)

{

std_id = i;

標準名稱 = 一個;

標準標記 = b;

}

無效顯示()

{

cout<<std_id<<” “<<std_name:<<” “<<std_marks <<endl;

}

};

詮釋主要(無效){

學生 s1 =學生(101,“索尼婭”,89); //創建一個學生對象

學生 s2=學生(102,“Nakul”,59);

s1.display();

s2.display(); 返回0;

}

輸出

解釋:id、name 和marks 是數據成員(也是實例變量)。 學生是一個參數化的構造函數,它的對像是在主類中創建的。

從世界頂級大學在線學習軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

構造函數只是我們可以傳遞值的特殊方法。 如果我們不將值傳遞給構造函數,則最終對象具有一些默認值。 [1] [MOU2]對象保存作為主類一部分的成員變量的方法和值。 這些值最終通過構造函數傳遞。 C++中參數化構造函數的優點是為不同的對象分配不同的值,並且可以重載。

既然您已經了解了 C++ 中的參數化構造函數,那麼如果您想更深入地挖掘並在您的編程生涯中上升,那麼請探索印度最大的在線高等教育公司 upGrad 的課程。 您必須查看我們的全棧軟件開發計劃

什麼是構造函數?

構造函數是類中的一種特殊方法,與類同名。 它很特別,因為在創建(實例化)類時會自動調用此方法。 如果構造函數沒有參數,則該類被實例化為空值。 構造函數執行初始化任務並初始化類的實例變量。 構造函數的主要目的是建立對象屬性的值。 它還用於執行任何只需要執行一次的操作。 構造函數通常在類中聲明為公共靜態對象,並且使用此構造函數創建對象。

一個類中可以有多少個構造函數?

如果我們談論 C++,那麼構造函數的數量是無限的。 但是,由於其他原因,例如您機器的內存限制,類的複雜性等,可能會有其他限制。因此,構造函數的數量是無限的,但構造函數的參數數量卻不是。 一個類中可以有任意數量的構造函數。 但是默認構造函數是必須的。 任何沒有默認構造函數的類都是抽像類。 抽像類不能被實例化。

什麼是面向對象編程?

面向對象編程是一種編程範式,將“對象”視為程序或計算機系統的基本構建塊。 對像是可以包含數據的軟件實體,以字段的形式,通常稱為屬性; 和代碼,以過程的形式,通常稱為方法。 面向對象的編程專注於數據及其周圍的規則,而不是像早期編程語言中常見的那樣專注於過程邏輯或控制流。 OOP 將數據作為一個整體而不是作為一組單獨的元素來處理。