標準資料型別之間會進行隱式的型別安全轉換,規則如下:
char->short->int->unsigned int->long->unsigned long->float->double 小轉大
#include
#include
using namespace std;
int main()
else
cout << "sizeof(s + 'b') = " << sizeof(s + 'b') << endl; // 將s和『b』都轉化為 int ,列印出4
return 0;
普通型別與類型別之間能否進行型別轉換?類型別之間能否相互轉換?
再論建構函式,
建構函式可以定義不同型別的引數。
引數滿足下列條件時稱為轉換建構函式:
有且僅有乙個引數,引數是基本型別,或者引數是其他類型別。
舊式的c方式強制型別轉換: int i;test t; i=int(5); t=test(100);
編譯器會盡力嘗試讓原始碼通過編譯,teat t; t=100; 100這個立即數預設為int型別,怎麼可能賦值給t物件呢,編譯器會看看有沒有轉換建構函式,發現test類中定義了 test(int i),可以進行轉換,預設等價於:t=test(100);
test t; t=5; // t=test(5); 隱式型別轉換
編譯器盡力嘗試的結果是隱式型別轉換
工程中通過 explicit 關鍵字杜絕編譯器的轉換嘗試,轉換建構函式被 explicit 修飾時只能進行顯示轉換,
強制轉換方式:
static_cast(value); //c++中
classname(value); //c語言中
(classname)value; //c語言中,不推薦
#include
#include
using namespace std;
class test
explicit test(int i) // 杜絕隱式轉換
test operator + (const test& p)
int value()
};int main()
{
test t;
t = static_cast(5); // t = test(5);
test r ;
r = t + static_cast(10); // r=t+10; <----> r = t + test(10);
cout << r.value() << endl;
return 0;
static_cast: 基本型別和類型別間轉換
轉換建構函式只有乙個引數,它的引數型別是其它型別,在型別轉換時被呼叫,隱式轉換時bug的重要**,explcit用於杜絕隱式型別轉換。
41 型別轉換函式 上
標準資料型別之間會進行隱式的型別安全轉換 轉換規則如下 char short int unsigned int long unsigned long float double 範例 有趣的隱式型別轉換 include include using namespace std int main int ...
41 型別轉換函式(上)
注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 再論型別轉換 1 標準資料型別之間會進行隱式的型別安全轉換 2 轉換規則如下 實驗分析 有趣的隱式型別轉換 41 1.cpp include include using n...
4 1 型別轉換
影象型別轉換就是把影象從一種型別轉換成另一種型別。opencv提供了200多種型別轉換。我們這次學三個。型別有 cv2.color bgr2gray 彩色影象轉灰度影象 cv2.color bgr2rgb bgr轉rgb cv2.color gray2bgr 灰度轉彩色 使用方法 b cv2.cvt...