c++型別轉換分為隱式型別轉換和顯式型別轉換
又稱為「標準轉換」,包括以下幾種情況:
1,算術轉換(arithmetic conversion) : 在混合型別的算術表示式中, 最寬的資料型別成為目標轉換型別。
int ival = 3;
double dval = 3.14159;
ival + dval;//ival被提公升為double型別
2,一種型別表示式賦值給另一種型別的物件:目標型別是被賦值物件的型別int
*pi = 0; //
0被轉化為int
*型別ival = dval; // double->int
例外:void指標賦值給其他指定型別指標時,不存在標準轉換,編譯出錯
3,將乙個表示式作為實參傳遞給函式呼叫,此時形參和實參型別不一致:目標轉換型別為形參的型別
extern
double
sqrt(double);
cout
<< "the square root of 2 is "
<< sqrt(2) << endl;
//2被提公升為double型別:2.0
4,從乙個函式返回乙個表示式,表示式型別與返回型別不一致:目標轉換型別為函式的返回型別double difference(int ival1, int ival2)
被稱為強制轉換型別(cast)
用於expression 和 new_type 之間的轉換,前提條件是new_type和expression之間已經有了混合的隱式轉換(combination of implicit) 或者有自定義的轉換型別(user-defined conversions)。
注意:sourse:test.cpp
#include
#include
struct b {};
struct d : b {};
enum
class e ;
enum eu ;
int main()
output:
n = 3
v.size() = 10
after move, v.size() = 0
*ni = 3
注意:
std::cout
<< "n = "
<< n << '\n';
std::vector
v = static_cast
>(10);
上段**檢查時會報錯。因為沒有定義或者實現的由int-to-vector 的轉換。
通常用於繼承關係中的安全的向上(upcast)或者向下(downcast)轉換
newtype和expression 同為類指標,或者引用,安全轉換。
sourse.cpp
#include
struct v ; // must be polymorphic to use runtime-checked dynamic_cast
};struct a : virtual v {};
struct b : virtual v
};struct d : a, b
};struct base
};struct derived: base
};int main()
base* b2 = new derived;
if(derived* d = dynamic_cast
(b2))
delete b1;
delete b2;
}
output:
downcast from b2 to d successful
reinpreter_cast可以把整數轉換為指標或者指標轉換為整數。以後研究。#include
#include
#include
int f()
int main()
output:
the value of &i is
0x7fff520e2a98
42this system is little-endian
42
該運算子物件用來修改型別的const或者volatile屬性。常量型別轉換為非常常量類。
sourse.cpp
#include
struct type
void m1(int v) const
int i;
};int main()
output
i = 4
type::i =
4
熟練運用還需要在工程中掌握。 C 型別轉換詳解
目錄 c 對於內建型別有隱式或顯式的型別轉化,如int,double,long,char,但是,c 還有類這個概念,類是一種自定義型別,為了讓類 自定義型別 達到內建型別的層次,c 對類也挺提供一些方法進行自動或者強制型別轉換 c 的好多任務作,在我看來就是讓自定義型別能和內建型別一樣簡單使用 操作...
C 型別轉換詳解 const cast
一.函式描述 const cast type id expression 主要是用來去掉const屬性,當然也可以加上const屬性。主要是用前者,後者很少用。去掉const屬性 const case num 常用,因為不能把乙個const變數直接賦給乙個非const變數,必須要轉換。加上const...
C 型別轉換詳解 const cast
一.函式描述 const cast type id expression 主要是用來去掉const屬性,當然也可以加上const屬性。主要是用前者,後者很少用。去掉const屬性 const case num 常用,因為不能把乙個const變數直接賦給乙個非const變數,必須要轉換。加上const...