C++程式將基本型別轉換為物件
C++ 中的基本資料型別是在語言本身中預定義的資料型別;例如 int、float、double 等。物件是類的例項,而 C++ 作為一種面向物件的語言,在基本資料型別和物件之間進行轉換是必要的。類充當資料型別的架構計劃。雖然這沒有具體描述任何資料,但它確實指定了類名代表什麼,即類的物件將是什麼樣子以及可以在其上執行哪些操作。
C++ 語言編譯器中沒有明確定義從基本資料型別到物件的轉換,因此要將基本資料型別轉換為物件;程式設計師必須定義該機制。基本型別如何轉換為特定物件是在使用者定義類的建構函式中定義的。我們舉一個例子來更好地理解這一點。
我們要解決的問題是將以克為單位給出的重量轉換為千克和克。為此,我們定義了一個使用者定義的類 weight,它包含兩個整數成員 kg 和 gm。'kg' 是給定重量的千克值,'gm' 是小於 1 千克的剩餘重量,需要進行轉換。解決該問題的演算法如下所示。
語法
轉換語法如下所示:
class Myclass{ private: int classVal; public: MyClass(){ classVal = 0; } MyClass(int val) { classVal = val; } }; int main() { Myclass m; int val = <integer value>; m = val; return 0; }
演算法
- 將輸入重量儲存在一個整型變數中。
- 建立一個 weight 類的物件。
- 將整數值賦給類物件;
- 呼叫物件的 show 函式。
在定義的類的建構函式中,執行以下操作
- 將輸入值除以 1000 以獲得千克 (kg) 值作為商。
- 將輸入值除以 1000 以獲得克 (gm) 值作為餘數。
如前所述,所有轉換機制都必須在建構函式內定義。建構函式必須是引數化的,並且必須將原始源值作為引數傳遞給建構函式。問題的原始碼如下所示。
示例
#include <iostream> using namespace std; //converts weight in grams to kgs and grams class Weight { private: int kg, gm; public: //default constructor Weight() { kg = 0; gm = 0; } //paramaeterized constructor Weight(int ip) { this->kg = ip / 1000; this->gm = ip % 1000; } //shows the output void show() { cout << "The weight is " << this->kg << " kgs and " << this->gm << " grams." << endl; } }; int main() { //weight in grams int ip = 1085; //conversion done here Weight w; w = ip; w.show(); return 0; }
輸出
The weight is 1 kgs and 85 grams.
在示例中,輸入在 main 函式中作為 'ip'。還有一個 weight 類 'w' 的物件。我們只是將整數值賦給類物件,並隱式呼叫了物件的帶引數建構函式。建構函式中定義的函式已執行,最後透過呼叫 'show' 函式顯示輸出。
結論
在此示例中,從基本型別到使用者定義類物件的轉換是透過隱式呼叫建構函式完成的。只要建構函式需要多個基本值來例項化物件,這就可以了。出於這個原因,我們必須顯式呼叫建構函式,然後將基本值作為引數傳遞給物件建構函式。從物件到基本型別的相反轉換是不同的,它需要更復雜的過程才能完成。
廣告