目錄
在日常的開發中, 我們經常會用到資料型別轉換, 所以我們要對資料型別轉換有一定的了解.
在 c++ 中, 某些標準型別的資料之間可以自動轉換.
隱式型別轉換: 由 c++ 編譯系統自動完成的, 我們無需干預. 例如:
int main()
輸出結果:
強制型別轉換: 在程式中將一種型別資料明確轉換成另一指定的型別. 例如:
int main()
輸出結果:212
如果用我們自己宣告的型別進行資料轉換就會發生乙個問題: 編譯系統並不知道如何轉換.
解決辦法:
轉換建構函式 (conversion constructor function) 可以將乙個其他型別的資料轉換成乙個類的物件的建構函式.
例如:#ifndef project8_complex_h
#define project8_complex_h
#include
using namespace std;
class complex ; // 無參構造
complex(double r, double i) : real(r), imaginary(i) {}; // 有參構造
complex(complex & c) ;
complex(double r) : real(r) {}; // 轉換建構函式
};};#endif //project8_complex_h
當我們使用轉換建構函式的時候我們可以將乙個標準資料轉換為類的物件. 我們使用型別轉換函式 (type conversion function) 可以將乙個類的物件反過來轉換成標準型別的資料.
complex 類:
#ifndef project8_complex_h
#define project8_complex_h
#include
using namespace std;
class complex ; // 無參構造
complex(double r, double i) : real(r), imaginary(i) {}; // 有參構造
complex(double r) : real(r) {}; // 轉換建構函式
operator double() ; // 型別轉換函式
complex operator+(complex &c) ;
};#endif //project8_complex_h
main:
#include
#include "complex.h"
using namespace std;
int main()
輸出結果:
5.18.3
編譯系統會根據表示式的上下文, 自動呼叫型別轉換函式, 將 complex 類物件作為 double 型別資料使用.
型別轉換函式也叫做: 型別轉換運算子函式, 型別轉換運算子過載函式, 強制型別轉換運算子過載函式.
不同型別進行各種混合運算的方案:
進行各種運算時, 使用型別轉換函式, 而不是對多種運算子進行過載. 工作量較小, 程式精幹, 防止出現二義性.
C 資料型別及其轉換詳解
前言 在c 中,資料型別可以分為以下幾種型別 值型別 value types 引用型別 reference types 指標型別 pointer types 其中指標型別只在不安全 下使用,一般不涉及所以今天不討論。我們主要 引用型別和值型別。一 基本定義 值型別的變數在宣告後,系統直接在託管棧中為...
c c 資料型別轉換
c c 資料型別轉換1 float,char,string,cstring unicode 統一碼 萬國碼 單一碼 是一種在計算機上使用的字元編碼。它為每種語言中的每個字元設定了統一並且唯一的二進位制編碼,以滿足跨語言 跨平台進行文字轉換 處理的要求。1990年開始研發,1994年正式公布。隨著計算...
C C 資料型別轉換
在c c 中,整型 單精度 雙精度及字元型資料可以進行混合運算,即雙目運算子兩邊的運算元型別可以不同。當表示式中不同型別的資料進行運算時,會發生資料型別的轉換。c c 中有兩種型別轉換的方法 自動型別轉換和強制型別轉換。所謂自動型別轉換是指在不同型別資料進行混合運算時,系統會自動進行資料型別的轉換。...