青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
kenwell
自己學習所用
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2025年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
統計
隨筆 - 25
文章 - 4
評論 - 21
引用 - 0
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆分類
c++學習中的問題(10)
(rss)
shell(7)
(rss)
stl學習
(rss)
vim(1)
(rss)
算法(4)
(rss)
隨筆檔案
2010年8月 (5)
2010年6月 (6)
2008年10月 (3)
2008年7月 (2)
2008年6月 (2)
2008年5月 (2)
2007年10月 (1)
2006年11月 (1)
2006年3月 (3)
文章分類
c++學習心得(2)
(rss)
stl學習(1)
(rss)
文章檔案
2008年7月 (2)
2006年3月 (2)
c++的好站點
stl中文站
能下吧
電腦書籍下載
最優秀的STL使用學習網站
搜索
最新評論
1.?re: Linux Shell Bash 正則表達式介紹[未登錄]
評論內容較長,點擊標題查看
--Steven
2.?re: c++經典書籍推薦和下載
不錯 我才 來看不知道晚不晚了
--次奧校
3.?essays
In all seriousness, this is quite hilarious and, unfortunately, probably true.
--termpapers99@gmail.com
4.?re: 一個n!的數后面有多少個0
評論內容較長,點擊標題查看
--thesis service
5.?re: 一個n!的數后面有多少個0
評論內容較長,點擊標題查看
--buy cheap research paper
閱讀排行榜
1.?c++ string 和wstring 之間的互相轉換函數(29455)
2.?c++經典書籍推薦和下載(11488)
3.?Linux Shell Bash 正則表達式介紹(7805)
4.?c++ 中用IXMLHTTPRequest向服務器post Xml數據(4422)
5.?一個n!的數后面有多少個0(3047)
評論排行榜
1.?一個n!的數后面有多少個0(13)
2.?c++經典書籍推薦和下載(8)
3.?c++ string 和wstring 之間的互相轉換函數(2)
4.?Linux Shell Bash 正則表達式介紹(1)
5.?shell 變量間接引用(0)
總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast)
非常抱歉,謝謝郭老師的指正,我沒有認真看這個文章就轉過來了,其實他的錯誤太多了,而且還是致命的,對大家不負責任了,請大家諒解!現在是修正版本,基本沒有錯誤了!如果覺得還有問題,請聯系我,謝謝你的關注!
這篇文章其實并不是不才的原創,本來打算自己寫的,但是通過baidu一下,發現有兄弟寫出來了,就干脆摘錄下來,供大家參考使用了!
詳情請看:
view plain
print
?
標準
c
++中主要有四種強制轉換類型運算符:
const_cast
,
reinterpret_cast
,
static_cast
,
dynamic_cast
等等。
1)
static_cast
<T*>(a)
將地址a轉換成類型T,T和a必須是指針、引用、算術類型或枚舉類型。
表達式
static_cast
<T*>(a), a的值轉換為模板中指定的類型T。在運行時轉換過程中,不進行類型檢查來確保轉換的安全性。
例子:
class
B { ... };
class
D :
public
B { ... };
void
f(B* pb, D* pd)
{
D* pd2 =
static_cast
<D*>(pb);
// 不安全, pb可能只是B的指針
B* pb2 =
static_cast
<B*>(pd);
// 安全的
...
}
class
B { ... };
class
D :
public
B { ... };
void
f(B* pb, D* pd)
{
D* pd2 =
static_cast
<D*>(pb);
// 不安全, pb可能只是B的指針
B* pb2 =
static_cast
<B*>(pd);
// 安全的
...
}
class
B { ... };
class
D :
public
B { ... };
void
f(B* pb, D* pd)
{
D* pd2 =
static_cast
<D*>(pb);
// 不安全, pb可能只是B的指針
B* pb2 =
static_cast
<B*>(pd);
// 安全的
...
}
2)
dynamic_cast
<T*>(a)
完成類層次結構中的提升。T必須是一個指針、引用或無類型的指針。a必須是決定一個指針或引用的表達式。
表達式
dynamic_cast
<T*>(a) 將a值轉換為類型為T的對象指針。如果類型T不是a的某個基類型,該操作將返回一個空指針。
例子:
class
A { ... };
class
B { ... };
void
f()
{
A* pa =
new
A;
B* pb =
new
B;
void
* pv =
dynamic_cast
<A*>(pa);
// pv 現在指向了一個類型為A的對象
...
pv =
dynamic_cast
<B*>(pb);
// pv 現在指向了一個類型為B的對象
}
3)
const_cast
<T*>(a)
去掉類型中的常量,除了
const
或不穩定的變址數,T和a必須是相同的類型。
表達式
const_cast
<T*>(a)被用于從一個類中去除以下這些屬性:
const
,
volatile
, 和 __unaligned。
例子:
class
A { ... };
void
f()
{
const
A *pa =
new
A;
//const對象
A *pb;
//非const對象
//pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象
pb =
const_cast
<A*>(pa);
// 現在OK了
...
}
class
A { ... };
void
f()
{
const
A *pa =
new
A;
//const對象
A *pb;
//非const對象
//pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象
pb =
const_cast
<A*>(pa);
// 現在OK了
...
}
class
A { ... };
void
f()
{
const
A *pa =
new
A;
//const對象
A *pb;
//非const對象
//pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象
pb =
const_cast
<A*>(pa);
// 現在OK了
...
}
4)
reinterpret_cast
<T*>(a)
任何指針都可以轉換成其它類型的指針,T必須是一個指針、引用、算術類型、指向函數的指針或指向一個類成員的指針。
表達式
reinterpret_cast
<T*>(a)能夠用于諸如
char
* 到
int
*,或者One_class* 到 Unrelated_class*等類似這樣的轉換,因此可能是不安全的。
例子:
class
A { ... };
class
B { ... };
void
f()
{
A* pa =
new
A;
void
* pv =
reinterpret_cast
<A*>(pa);
// pv 現在指向了一個類型為B的對象,這可能是不安全的
...
}
標準c++中主要有四種強制轉換類型運算符: const_cast,reinterpret_cast,static_cast,dynamic_cast等等。 1)static_cast<T*>(a) 將地址a轉換成類型T,T和a必須是指針、引用、算術類型或枚舉類型。 表達式static_cast<T*>(a), a的值轉換為模板中指定的類型T。在運行時轉換過程中,不進行類型檢查來確保轉換的安全性。 例子: class B { ... }; class D : public B { ... }; void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // 不安全, pb可能只是B的指針 B* pb2 = static_cast<B*>(pd); // 安全的 ... } class B { ... }; class D : public B { ... }; void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // 不安全, pb可能只是B的指針 B* pb2 = static_cast<B*>(pd); // 安全的 ... } class B { ... }; class D : public B { ... }; void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // 不安全, pb可能只是B的指針 B* pb2 = static_cast<B*>(pd); // 安全的 ... } 2)dynamic_cast<T*>(a) 完成類層次結構中的提升。T必須是一個指針、引用或無類型的指針。a必須是決定一個指針或引用的表達式。 表達式dynamic_cast<T*>(a) 將a值轉換為類型為T的對象指針。如果類型T不是a的某個基類型,該操作將返回一個空指針。 例子: class A { ... }; class B { ... }; void f() { A* pa = new A; B* pb = new B; void* pv = dynamic_cast<A*>(pa); // pv 現在指向了一個類型為A的對象 ... pv = dynamic_cast<B*>(pb); // pv 現在指向了一個類型為B的對象 } 3)const_cast<T*>(a) 去掉類型中的常量,除了const或不穩定的變址數,T和a必須是相同的類型。 表達式const_cast<T*>(a)被用于從一個類中去除以下這些屬性:const, volatile, 和 __unaligned。 例子: class A { ... }; void f() { const A *pa = new A;//const對象 A *pb;//非const對象 //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象 pb = const_cast<A*>(pa); // 現在OK了 ... } class A { ... }; void f() { const A *pa = new A;//const對象 A *pb;//非const對象 //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象 pb = const_cast<A*>(pa); // 現在OK了 ... } class A { ... }; void f() { const A *pa = new A;//const對象 A *pb;//非const對象 //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象 pb = const_cast<A*>(pa); // 現在OK了 ... } 4)reinterpret_cast<T*>(a) 任何指針都可以轉換成其它類型的指針,T必須是一個指針、引用、算術類型、指向函數的指針或指向一個類成員的指針。 表達式reinterpret_cast<T*>(a)能夠用于諸如char* 到 int*,或者One_class* 到 Unrelated_class*等類似這樣的轉換,因此可能是不安全的。 例子: class A { ... }; class B { ... }; void f() { A* pa = new A; void* pv = reinterpret_cast<A*>(pa); // pv 現在指向了一個類型為B的對象,這可能是不安全的 ... }
如果不明白,可以給我留言!
posted on 2008-07-22 10:07
c++ 學習
閱讀(346)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © c++ 學習
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国产日韩精品一区二区浪潮av
|
亚洲午夜国产一区99re久久
|
狼人天天伊人久久
|
欧美在线观看你懂的
|
亚洲区一区二
|
亚洲国产高清一区
|
最新国产成人在线观看
|
亚洲国产老妈
|
亚洲福利久久
|
99热免费精品在线观看
|
亚洲一区二区欧美日韩
|
久久视频这里只有精品
|
久久av一区二区
|
亚洲欧美日韩系列
|
在线视频欧美日韩精品
|
欧美成人伊人久久综合网
|
久久激情视频
|
亚洲欧美日韩另类
|
欧美日韩综合精品
|
在线午夜精品
|
亚洲欧美激情在线视频
|
国产精品视频免费一区
|
国产精品久久久久久久久久免费看
|
亚洲国产高清在线
|
亚洲欧洲另类国产综合
|
国产精品国产三级国产普通话蜜臀
|
亚洲黄色在线看
|
91久久精品日日躁夜夜躁欧美
|
亚洲素人一区二区
|
亚洲国产一区二区三区a毛片
|
欧美亚洲日本网站
|
国产一区二区成人
|
久久精品国产2020观看福利
|
亚洲男人第一网站
|
欧美体内谢she精2性欧美
|
亚洲国产成人久久综合一区
|
免费成人高清
|
欧美精品三级
|
亚洲午夜一区
|
午夜精品久久久99热福利
|
国产精品v日韩精品
|
亚洲午夜小视频
|
久久激五月天综合精品
|
亚洲精选视频在线
|
亚洲一区二三
|
国产精品视频xxxx
|
午夜视频精品
|
久久午夜激情
|
亚洲精品影视在线观看
|
午夜精品久久久久久久99热浪潮
|
亚洲精品小视频
|
国产欧美日韩一区二区三区在线观看
|
欧美在线免费视频
|
午夜激情综合网
|
亚洲人www
|
日韩午夜电影在线观看
|
欧美午夜大胆人体
|
美女精品网站
|
国产精品拍天天在线
|
免费成人毛片
|
国产精品永久免费视频
|
毛片一区二区
|
国产日本亚洲高清
|
午夜日本精品
|
亚洲一区二区三区四区五区午夜
|
国产精品啊啊啊
|
美乳少妇欧美精品
|
韩国视频理论视频久久
|
欧美一区二区在线看
|
欧美国产综合视频
|
香蕉免费一区二区三区在线观看
|
久久这里只有
|
av不卡免费看
|
亚洲激情网站
|
亚洲国产成人精品久久久国产成人一区
|
亚洲午夜电影在线观看
|
欧美在线视频全部完
|
国产午夜精品理论片a级探花
|
亚洲日本视频
|
欧美在线观看视频在线
|
老司机午夜精品视频在线观看
|
国产精品视频网站
|
亚洲欧美中文字幕
|
蜜桃久久精品一区二区
|
夜夜精品视频
|
国内精品模特av私拍在线观看
|
亚洲一区中文字幕在线观看
|
久久男人资源视频
|
麻豆精品国产91久久久久久
|
中国日韩欧美久久久久久久久
|
禁久久精品乱码
|
国产亚洲精品美女
|
性色av一区二区三区在线观看
|
亚洲午夜91
|
国产亚洲成人一区
|
欧美一区二区三区四区在线观看
|
亚洲影视在线
|
一区一区视频
|
国产九九精品
|
国产精品久久久久91
|
欧美日韩在线播放三区
|
欧美日韩国语
|
亚洲第一中文字幕
|
亚洲高清在线视频
|
亚洲欧洲精品一区二区精品久久久
|
亚洲精品视频在线看
|
亚洲高清自拍
|
欧美片第一页
|
亚洲欧美日韩一区二区
|
欧美精品一区三区在线观看
|
久久国产精品72免费观看
|
欧美高清影院
|
久久成人精品
|
99精品欧美一区二区蜜桃免费
|
中日韩男男gay无套
|
欧美在线视频日韩
|
中日韩美女免费视频网站在线观看
|
午夜一区不卡
|
亚洲乱码一区二区
|
久久久国产精品一区二区三区
|
中文国产成人精品
|
欧美激情视频在线播放
|
久久成人18免费观看
|
欧美视频中文字幕
|
亚洲欧洲日本一区二区三区
|
亚洲第一精品电影
|
欧美性猛交99久久久久99按摩
|
欧美一区久久
|
国产精品久久久久久久app
|
亚洲电影av在线
|
伊人久久噜噜噜躁狠狠躁
|
亚洲欧美色婷婷
|
久久精品欧美日韩
|
国产精品视频免费一区
|
亚洲视频免费在线
|
中文日韩在线视频
|
欧美精品一区二区三区一线天视频
|
免费成人av
|
91久久中文
|
欧美精品福利
|
亚洲精品一区二区三区av
|
在线不卡中文字幕
|
久久免费少妇高潮久久精品99
|
久久久999精品视频
|
国产一区二区三区不卡在线观看
|
性欧美精品高清
|
久久国产日韩欧美
|
国产在线一区二区三区四区
|
欧美一区在线直播
|
久久久精品一区
|
极品少妇一区二区
|
久久一区二区三区四区
|
国产精品乱人伦中文
|
亚洲一本视频
|
亚洲午夜免费视频
|
韩日在线一区
|
久久综合精品国产一区二区三区
|
亚洲激情欧美激情
|
香蕉成人啪国产精品视频综合网
|
国产日产亚洲精品
|
美女脱光内衣内裤视频久久影院
|
91久久精品国产91性色tv
|
一区二区三区日韩欧美精品
|
国产精品欧美一区二区三区奶水
|
欧美一区国产一区
|
亚洲国产精品久久久久久女王
|
亚洲最新视频在线播放
|
国产精品免费aⅴ片在线观看
|
性欧美xxxx大乳国产app
|
欧美大片一区二区三区
|
夜夜嗨av一区二区三区免费区
|
国产欧美日本
|
欧美精品在线极品
|
午夜久久久久久久久久一区二区
|
欧美成人激情视频免费观看
|
亚洲一区二区三区高清
|
激情久久影院
|
欧美午夜宅男影院在线观看
|
久久亚洲精品伦理
|
亚洲深夜激情
|
欧美激情麻豆
|
性高湖久久久久久久久
|
亚洲福利专区
|
国产精品你懂的在线欣赏
|
久久人人爽人人
|
亚洲一区精品在线
|
亚洲成色777777女色窝
|
亚洲主播在线
|
一本大道久久a久久精品综合
|
国产一区亚洲一区
|
国产精品日日摸夜夜添夜夜av
|
久久亚洲不卡
|
欧美亚洲三级
|
在线亚洲+欧美+日本专区
|
欧美不卡三区
|
免费高清在线一区
|
久久人人精品
|
亚洲欧洲av一区二区
|
久久久欧美精品
|
亚洲桃色在线一区
|