C 中的原始資料型別是語言本身預先定義的資料型別;像int、float、double等。物件是類別的實例,而C 是物件導向的語言,原始資料類型和物件之間的轉換是必要的。類別充當資料類型的架構計劃。雖然這沒有具體描述任何數據,但它確實指定了類別名稱的含義,即該類別的物件是什麼樣子以及可以對其執行什麼操作。
在C 語言編譯器中,原始資料類型到對象之間的轉換沒有明確定義,因此要將原始資料型別轉換為對象,必須由程式設計師定義機制。如何將原始型別轉換為特定物件是在使用者定義類別的建構函式中定義的。我們舉一個例子來更好地理解這個問題。
我們正在解決的問題是以克為單位的重量轉換為公斤和克。為此,我們定義了一個使用者定義的類別權重,其中包含兩個整數成員 kg 和 gm。 「kg」是給定重量的公斤值,「gm」是要轉換的小於一公斤的剩餘重量。下面給出解決該問題的演算法。
轉換的語法如下 -
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; }
在定義的類別的建構子中,執行以下操作:
如前所述,所有的轉換機制都必須在建構函式內定義。建構函數必須是帶參數的,且原始來源值必須作為參數傳遞給建構函式。問題的源碼如下。
#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.
在範例中,輸入位於主函數內部,為「ip」。還有一個類別權重「w」的物件。我們剛剛將整數值分配給類別對象,並呼叫了對該對象的參數化構造函數的隱式呼叫。構造函數中定義的函數已執行,最後透過呼叫show函數顯示輸出。
在此範例中,從原始類型到使用者定義的類別物件的轉換是使用建構函數的隱式呼叫完成的。這很好,直到建構函數需要多個原始值來實例化該物件。因此,我們必須明確地呼叫建構函數,然後將原始值作為參數傳遞給物件建構函數。相反的從物件到原始類型的轉換則不同,它需要更複雜的過程來完成。
以上是C++程式將原始型別轉換為對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!