5D空間
學(xué)習(xí)總結(jié)與經(jīng)驗(yàn)交流
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
留言簿
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(18)
解題報(bào)告
(rss)
困難與疑問(wèn)(3)
(rss)
思考中
(rss)
我的開(kāi)源庫(kù)(5)
(rss)
學(xué)習(xí)筆記(10)
(rss)
文章分類
5DC++
(rss)
轉(zhuǎn)載與分享
(rss)
搜索
積分與排名
積分 - 18697
排名 - 861
最新隨筆
1.?C++中對(duì)浮點(diǎn)數(shù)的格式化顯示
2.?PointerPool(指針池)
3.?類型轉(zhuǎn)換操作符
4.?VS2010實(shí)用小記
5.?關(guān)于二重模板 小記1
6.?模板的聲明與實(shí)現(xiàn)的分離方法
7.?多重繼承、二義性、虛基類(虛繼承)之我見(jiàn)
8.?LHRODT(非遞歸求解度數(shù)為2的線性齊次方程的第n項(xiàng))
9.?類實(shí)例化時(shí) 默認(rèn)構(gòu)造函數(shù)調(diào)用 小記
10.?probability(概率發(fā)生器)
11.?findAnWithDegreeOfTwo(計(jì)算度數(shù)為2的齊次遞歸數(shù)列的第n項(xiàng))
12.?Zeller(計(jì)算某一天是星期幾)
13.?【求助】如何在繼承中隱藏基類的某些公共接口?
14.?【求助】如何限制模板接受的類型?
15.?關(guān)于類模板的友元函數(shù)
最新評(píng)論
1.?re: 【求助】如何在繼承中隱藏基類的某些公共接口?
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--wjq
2.?re: 【求助】如何在繼承中隱藏基類的某些公共接口?
在派生類中使用using關(guān)鍵字,在private中聲明基類你想隱藏的公共接口就可以了。
--wjq
3.?re: 多重繼承、二義性、虛基類(虛繼承)之我見(jiàn)
可以啊,自慰.@自己繼承自己
--CL
4.?re: 多重繼承、二義性、虛基類(虛繼承)之我見(jiàn)
孩子,代碼打錯(cuò)了。
class C : public C
自己繼承自己?
--自己繼承自己
5.?re: probability(概率發(fā)生器)
逗號(hào) 表達(dá)式
從左到右計(jì)算,然后只取最后一個(gè)值....
--egmkang
閱讀排行榜
1.?多重繼承、二義性、虛基類(虛繼承)之我見(jiàn)(3459)
2.?模板的聲明與實(shí)現(xiàn)的分離方法(2142)
3.?PointerPool(指針池)(1867)
4.?probability(概率發(fā)生器)(1487)
5.?關(guān)于二重模板 小記1(1324)
關(guān)于二重模板 小記1
摘要:二重模板有什么用,什么情況下使用二重模板,對(duì)二重模板進(jìn)行的某種特化進(jìn)行重載,=以及拷貝構(gòu)造函數(shù)在二重模板中的注意事項(xiàng)
小記1是因?yàn)檫@個(gè)話題很可能還有其他小記。
在模板下定義一個(gè)類,類的方法包括重載的運(yùn)算符往往可以處理這個(gè)類模板對(duì)于相同類型參數(shù)的特化的對(duì)象。但是有時(shí)候我們往往希望一個(gè)類模板的特化對(duì)象的方法還可以處理這個(gè)類模板其他特化的對(duì)象。一種辦法是利用類的性質(zhì)定義轉(zhuǎn)換構(gòu)造函數(shù)(convert constructor ),但是我們可以使用模板得到一種更通用的方法,那就是在類模板中定義二重模板。
定義方法很簡(jiǎn)單,下面的例子會(huì)展示。注意內(nèi)層模板的參數(shù)應(yīng)該與外層模板不一樣,而且定義的時(shí)候應(yīng)該使用兩層template。
對(duì)于一般的函數(shù)和運(yùn)算符,通常來(lái)說(shuō),如果只定義一個(gè)二重模板的方法,它既可以處理不同類型的特化對(duì)象,也可以處理相同類型的特化對(duì)象(即T和C是相同類型)。如果在外層模板中另外定義了一個(gè)普通的同名方法(以處理相同類型的特化對(duì)象),那么在處理相同類型的特化對(duì)象時(shí),則會(huì)調(diào)用這一套方法。這有點(diǎn)像對(duì)模板特化進(jìn)行重載(告訴編譯器在特殊情況,這里是特化類型相同,應(yīng)該使用另外一套方法)。
例如:
如果把8行和14~18行注釋掉,那么輸出結(jié)果均為兩行 接受不同類型。
1
#include
<
iostream
>
2
using
namespace
std;
3
4
template
<
typename T
>
5
class
A
6
{
7
public
:
8
void
function(
const
A
<
T
>
&
);
9
10
template
<
typename C
>
11
void
function(
const
A
<
C
>
&
);
12
}
;
13
14
template
<
typename T
>
15
void
A
<
T
>
::function(
const
A
<
T
>
&
)
16
{
17
cout
<<
"
接受相同類型
"
<<
endl;
18
}
19
20
template
<
typename T
>
21
template
<
typename C
>
22
void
A
<
T
>
::function(
const
A
<
C
>
&
)
23
{
24
cout
<<
"
接受不相同類型
"
<<
endl;
25
}
26
27
int
main()
28
{
29
A
<
int
>
a;
30
A
<
int
>
b;
31
A
<
double
>
c;
32
33
a.function( b );
34
a.function( c );
35
}
但是對(duì)于復(fù)制操作符和拷貝構(gòu)造函數(shù)來(lái)說(shuō),情況有些不一樣。因?yàn)榫幾g器會(huì)為沒(méi)有定義的類提供默認(rèn)=以及拷貝構(gòu)造函數(shù),根據(jù)上面的分析,這個(gè)默認(rèn)的東西相當(dāng)于對(duì)二重模板中特殊情況的重載,所以如果只有一個(gè)二重模板,那么它將不能處理相同類型的類模板特化的對(duì)象。而這時(shí),程序會(huì)調(diào)用編譯器提供的默認(rèn)=以及拷貝構(gòu)造函數(shù),而這往往是我們不想要的(我們需要自己定制的=以及拷貝構(gòu)造函數(shù)啊)。所以這時(shí),我們需要自己定制一套非二重模板的=或者拷貝構(gòu)造函數(shù)來(lái)滿足需求。
例如:
如果把8行和14~18行注釋掉,那么輸出結(jié)果只有一行 為不同類型調(diào)用=號(hào) ,因?yàn)榱硗庖痪湓捳{(diào)用了編譯器提供的默認(rèn)=號(hào),所以并沒(méi)有任何輸出。
1
#include
<
iostream
>
2
using
namespace
std;
3
4
template
<
typename T
>
5
class
B
6
{
7
public
:
8
void
operator
=
(
const
B
<
T
>
&
);
9
10
template
<
typename C
>
11
void
operator
=
(
const
B
<
C
>
&
);
12
}
;
13
14
template
<
typename T
>
15
void
B
<
T
>
::
operator
=
(
const
B
<
T
>
&
)
16
{
17
cout
<<
"
為相同類型調(diào)用=號(hào)
"
<<
endl;
18
}
19
20
template
<
typename T
>
21
template
<
typename C
>
22
void
B
<
T
>
::
operator
=
(
const
B
<
C
>
&
)
23
{
24
cout
<<
"
為不同類型調(diào)用=號(hào)
"
<<
endl;
25
}
26
27
int
main()
28
{
29
B
<
int
>
a;
30
B
<
int
>
b;
31
B
<
double
>
c;
32
33
a
=
b;
34
a
=
c;
35
}
posted on 2011-04-05 13:50
今晚打老虎
閱讀(1324)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
學(xué)習(xí)筆記
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
C++中對(duì)浮點(diǎn)數(shù)的格式化顯示
類型轉(zhuǎn)換操作符
VS2010實(shí)用小記
關(guān)于二重模板 小記1
模板的聲明與實(shí)現(xiàn)的分離方法
多重繼承、二義性、虛基類(虛繼承)之我見(jiàn)
類實(shí)例化時(shí) 默認(rèn)構(gòu)造函數(shù)調(diào)用 小記
關(guān)于類模板的友元函數(shù)
關(guān)于運(yùn)算符重載的一些筆記
最簡(jiǎn)短的鸚鵡學(xué)舌程序
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 今晚打老虎
久久频这里精品99香蕉久
|
久久久久久久久久久久中文字幕
|
欧美久久综合九色综合
|
日韩精品无码久久一区二区三
|
欧美久久久久久午夜精品
|
伊人久久亚洲综合影院
|
国内精品久久人妻互换
|
久久精品国产一区二区电影
|
久久人人爽人人爽人人片AV麻烦
|
久久亚洲中文字幕精品有坂深雪
|
伊人色综合久久
|
久久九九兔免费精品6
|
国产精品伊人久久伊人电影
|
亚洲欧美伊人久久综合一区二区
|
久久九九有精品国产23百花影院
|
亚洲va久久久久
|
久久国产精品波多野结衣AV
|
久久久久人妻一区精品色
|
一本色道久久综合
|
国产精品欧美亚洲韩国日本久久
|
亚洲精品无码成人片久久
|
日韩欧美亚洲国产精品字幕久久久
|
久久99国产精品一区二区
|
亚洲乱码精品久久久久..
|
性做久久久久久免费观看
|
狠狠人妻久久久久久综合蜜桃
|
久久亚洲精品成人AV
|
亚洲精品乱码久久久久久自慰
|
91精品久久久久久无码
|
国产精品免费看久久久
|
久久国产成人
|
日本强好片久久久久久AAA
|
国产—久久香蕉国产线看观看
|
18禁黄久久久AAA片
|
色狠狠久久综合网
|
一本色综合久久
|
国内精品久久国产
|
久久天天婷婷五月俺也去
|
午夜精品久久久久9999高清
|
无码国内精品久久人妻麻豆按摩
|
亚洲va久久久噜噜噜久久
|