一路向北
追逐夢想,永不停步......
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-4 評論-40 文章-117 trackbacks-0
關(guān)于 return void()
大家都知道,return 用來在函數(shù)里返回,有兩種形式:一是 直接用return; 或者省略,表示無返回值。二是 return expression; 返回一個值。
今天測試時我發(fā)現(xiàn)兩種以前沒注意的方式,也是正確的。
<1>.
void
FuncA()
{
return
void
();
//
正確的,同:return;
}
<2>.
void
FuncB()
{
return
FuncA();
//
也可以,同: FuncA();
}
這兩種特性在某些情況下,是很有用的。比如,我要寫一個函數(shù)模板,以 任意的模板參數(shù)類型 T 為返回值。
template
<
typename T
>
T FuncC()
{
return
T();
//
這里舉例返回 T();
}
template
<
typename T
>
T FuncD()
{
return
FuncC
<
T
>
();
}
所以即使對于 返回值 為 void 的情況,F(xiàn)uncD<void>(); 也是適用的。
如果編譯器不支持這種特性。那么當(dāng)我們就得針對void返回類型進(jìn)行特化,或者函數(shù)重載,示例代碼如下:
//
一般處理
template
<
typename T
>
T FuncE()
{
return
FuncC
<
T
>
();
}
//
特化版本
template
<>
void
FuncE
<
void
>
()
{
FuncC
<
void
>
();
}
//
或者進(jìn)行重載亦可
void
FuncE()
{
FuncC
<
void
>
();
}
void
Test()
{
FuncE
<
int
>
();
//
泛化版本
FuncE
<
void
>
();
//
特化版本
FuncE();
//
重載版本
}
FuncE函數(shù)沒有參數(shù),可以特化或者重載,但如果它還有其他模板參數(shù)的話,由于函數(shù)模板不支持部分特化,就只能使用重載模板函數(shù)了。
發(fā)現(xiàn)這種方式后,為我省了很多事,原來為了識別一個模板參數(shù)是否為void,我模擬stl 搞了個 templeate <typename T> Return_Type_Trait {},然后利用類模板的特化來專門定義一些類型,以到達(dá)識別返回類型的目的。現(xiàn)在看來,都是多余的。可以使用這個特性來實現(xiàn)。
posted on 2009-07-08 11:54
李陽
閱讀(9601)
評論(0)
編輯
收藏
引用
所屬分類:
C++
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
關(guān)于C++中的臨時對象問題
剖析Windows消息處理機(jī)制
關(guān)于 return void()
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2025年6月
>
日
一
二
三
四
五
六
25
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
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
C++(3)
Linux
LUA
游戲開發(fā)
隨筆檔案
2011年8月 (1)
2010年2月 (1)
2010年1月 (1)
2009年7月 (1)
文章分類
C++(42)
IT人生(3)
Linux(15)
LUA(2)
創(chuàng)業(yè)雜談(1)
經(jīng)典收藏(1)
人工智能
算法(2)
圖形圖像(6)
網(wǎng)絡(luò)編程(2)
游戲開發(fā)(6)
文章檔案
2012年2月 (5)
2011年1月 (6)
2010年12月 (3)
2010年7月 (1)
2010年6月 (1)
2010年5月 (3)
2010年4月 (12)
2010年3月 (7)
2010年1月 (2)
2009年12月 (3)
2009年10月 (5)
2009年9月 (1)
2009年8月 (1)
2009年7月 (4)
2009年6月 (5)
2009年5月 (7)
2009年4月 (9)
2009年3月 (16)
2008年6月 (1)
2008年5月 (8)
2008年4月 (3)
2008年3月 (3)
2008年2月 (3)
2008年1月 (1)
2007年12月 (4)
2007年11月 (3)
鏈接
CodeGuru
CodeProject
sqlite中文站
VIM -幫助
Vim中文使用手冊
面向 Linux 程序員和系統(tǒng)管理員的技術(shù)資源
云風(fēng)的 BLOG
友情鏈接
Azure
Creator_Chen's dream island
icoder的博客
牽著老婆滿街逛
搜索
最新評論
1.?re: Linux下Gcc生成和使用靜態(tài)庫和動態(tài)庫詳解(轉(zhuǎn))
評論內(nèi)容較長,點擊標(biāo)題查看
--hdp
2.?re: QueryPerformanceFrequency用法
評論內(nèi)容較長,點擊標(biāo)題查看
--chenyangming
3.?re: g++ 編譯和鏈接
評論內(nèi)容較長,點擊標(biāo)題查看
--李然
4.?re: 剖析Windows消息處理機(jī)制
評論內(nèi)容較長,點擊標(biāo)題查看
--小旭
5.?re: "當(dāng)前不會命中斷點。源代碼與原始版本不同"解決方法[未登錄]
非常感謝
--blue
閱讀排行榜
1.?剖析Windows消息處理機(jī)制(11825)
2.?關(guān)于 return void()(9601)
3.?對C++ Local的經(jīng)典分析(轉(zhuǎn))(6695)
4.?關(guān)于C++中的臨時對象問題(4784)
評論排行榜
1.?關(guān)于C++中的臨時對象問題(6)
2.?對C++ Local的經(jīng)典分析(轉(zhuǎn))(2)
3.?剖析Windows消息處理機(jī)制(2)
4.?關(guān)于 return void()(0)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 李陽
久久精品国产2020
|
亚洲伊人久久大香线蕉综合图片
|
久久99精品久久久久久hb无码
|
蜜臀av性久久久久蜜臀aⅴ麻豆
|
久久这里只精品国产99热
|
久久影视综合亚洲
|
国产精品岛国久久久久
|
久久www免费人成看国产片
|
欧美亚洲国产精品久久
|
久久精品aⅴ无码中文字字幕重口
|
久久免费小视频
|
一本色道久久88—综合亚洲精品
|
亚洲国产精品久久久久久
|
久久91精品国产91久
|
国产精品一区二区久久精品
|
要久久爱在线免费观看
|
亚洲国产二区三区久久
|
色综合久久无码中文字幕
|
久久www免费人成看国产片
|
国产V综合V亚洲欧美久久
|
91麻豆国产精品91久久久
|
97久久香蕉国产线看观看
|
无码国内精品久久综合88
|
91亚洲国产成人久久精品
|
无码人妻久久一区二区三区免费丨
|
狠狠色综合网站久久久久久久高清
|
国产精品久久久久久搜索
|
国产69精品久久久久APP下载
|
99精品久久久久久久婷婷
|
久久综合九色综合网站
|
亚洲精品无码久久久影院相关影片
|
久久综合精品国产一区二区三区
|
97久久综合精品久久久综合
|
欧美va久久久噜噜噜久久
|
99久久精品免费看国产一区二区三区
|
国产亚洲精午夜久久久久久
|
91超碰碰碰碰久久久久久综合
|
色婷婷综合久久久久中文一区二区
|
狠狠色婷婷久久一区二区
|
思思久久精品在热线热
|
热久久视久久精品18
|