Everything start here.
Windows8 Tech
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆 - 55 文章 - 15 trackbacks - 0
<
2012年5月
>
日
一
二
三
四
五
六
29
30
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
31
1
2
3
4
5
6
7
8
9
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
Windows 8(8)
隨筆檔案
2013年2月 (1)
2013年1月 (8)
2012年10月 (10)
2012年9月 (1)
2012年6月 (6)
2012年5月 (16)
2012年4月 (5)
2012年3月 (4)
2012年2月 (4)
搜索
最新評(píng)論
1.?re: Window 8 學(xué)習(xí)筆記(三)-- 如何創(chuàng)建一個(gè)可變尺寸的GridView
樓主能提供完整的源碼么,想系統(tǒng)學(xué)習(xí)下,謝謝啦,
--墮落1990
2.?re: Windows 8 學(xué)習(xí)筆記(四)--創(chuàng)建Variable Sized GridView之PrepareContainerForItemOverride方法
@Dino-Tech
@Dino-Tech
OK,期待你加我的QQ.
--英明神武可愛(ài)
3.?re: Windows 8 學(xué)習(xí)筆記(四)--創(chuàng)建Variable Sized GridView之PrepareContainerForItemOverride方法
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--Dino-Tech
4.?re: Windows 8 學(xué)習(xí)筆記(四)--創(chuàng)建Variable Sized GridView之PrepareContainerForItemOverride方法
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--英明神武可愛(ài)
5.?re: Windows 8 學(xué)習(xí)筆記(四)--創(chuàng)建Variable Sized GridView之PrepareContainerForItemOverride方法
你可以加我的qq嗎,我按你的方法繼承了gridview,但是編譯不過(guò)。
--英明神武可愛(ài)
閱讀排行榜
1.?Dino Windows 8 學(xué)習(xí)筆記(十四)--BackgroundTask 15問(wèn)(3485)
2.?Dino Windows 8 學(xué)習(xí)筆記(十)-- 一個(gè)異常引發(fā)的文章之Resource Dictionary(3209)
3.?Dino Windows 8 學(xué)習(xí)筆記(十三)-- Toast(2856)
4.?Window 8 學(xué)習(xí)筆記(二)--如何創(chuàng)建自定義類(lèi)型的MessageDialog(2501)
5.?Windows 8 學(xué)習(xí)筆記(四)--創(chuàng)建Variable Sized GridView之PrepareContainerForItemOverride方法(2171)
評(píng)論排行榜
1.?Windows 8 學(xué)習(xí)筆記(四)--創(chuàng)建Variable Sized GridView之PrepareContainerForItemOverride方法(7)
2.?Thinking in C++--第三章 平時(shí)不太注意的編程細(xì)節(jié)(3)
3.?Windows 8 基本概念(1)
4.?Window 8 學(xué)習(xí)筆記(三)-- 如何創(chuàng)建一個(gè)可變尺寸的GridView (1)
5.?Dino Windows 8 學(xué)習(xí)筆記(十二) - 動(dòng)態(tài)瓷貼(1)
Thinking in C++ -- 第十二章 運(yùn)算符重載
運(yùn)算符重載的目的:使操作更明確,更方便
可以是成員函數(shù),也可以是全局函數(shù)。成員函數(shù)的好處是:返回值可以調(diào)用函數(shù)。全局函數(shù)的好處是:運(yùn)算符兩邊的對(duì)象都可以進(jìn)行隱式類(lèi)型轉(zhuǎn)化。但是,如果定義了一個(gè)全局的運(yùn)算符,將有機(jī)會(huì)覆蓋掉標(biāo)準(zhǔn)的運(yùn)算。
不能重載的運(yùn)算符:
1. 成員選擇operator.()。如果允許重載,就不能用普通的方法訪(fǎng)問(wèn)成員,只能用operator->()訪(fǎng)問(wèn)。
2. 成員指針間接引用operator.*()。
3. 不存在的用戶(hù)自定義的運(yùn)算符。
ps:不能改變優(yōu)先級(jí),也不能改變運(yùn)算符的參數(shù)。否則很難記憶。
幾個(gè)比較重要的運(yùn)算符:
Class Byte
{
int
b;
public
:
const
Byte
&
operator
++
()
//
prefix ++byte
{
b
++
;
return
*
this
;
}
const
Byte
&
operator
++
(
int
)
//
postfix byte++
{
Byte before(b);
b
++
;
return
before;
}
}
;
/**/
////////////
/
class
Integer
{
long
i;
public
:
Integer(
long
ll
=
0
):i(ll)
{}
friend
const
Integer
operator
-
(
const
Integer
&
left,
const
Integer
&
right);
}
;
const
Integer
operator
-
(
const
Integer
&
left,
const
Integer
&
right)
{
return
Integer(left.i
-
right.i);
}
//
返回值優(yōu)化,構(gòu)造一個(gè)對(duì)象并交給返回值。
operator->靈巧指針,是一個(gè)類(lèi)看起來(lái)像指針 :必須返回一個(gè)對(duì)象(或?qū)ο蟮囊茫搶?duì) 象也有一個(gè)指針間接引用運(yùn)算符;或者必須返回一個(gè)指針。
class
Obj
{
public
:
void
f()
const
{cout
<<
"
f()
"
<<
endl;}
}
;
class
ObjContainer
{
vector
<
Obj
*>
a;
friend
class
SmartPointer;
}
;
class
SmartPointer
{
ObjContainer
&
oc;
int
index;
public
:
SmartPointer(ObjContainer
&
objc):oc(objc)
{
index
=
0
;
}
Obj
*
operator
->
()
const
{
return
oc.a[index];
}
}
;
ObjContainer oc;
SmartPointer sp(oc);
sp
->
f();
一般將智能指針嵌入它所服務(wù)的類(lèi)中。
operator->*(),二元運(yùn)算符,必須有一個(gè)operator(),且必須是成員函數(shù)。operator()允許里面有任意參數(shù),使得對(duì)象看起來(lái)像一個(gè)真正的函數(shù)。
class
Dog
{
public
:
int
run(
int
i)
const
{}
int
eat(
int
i)
const
{}
typedef
int
(Dog::
*
PMF)(
int
)
const
;
class
FunctionObject
{
Dog
*
ptr;
PMF pmem;
public
:
FunctionObject(Dog
*
dp, PMF pmf):ptr(dp), pmem(pmf)
{}
int
operator
()(
int
i)
const
{
return
(ptr
->*
pmem)(i);
}
}
;
FunctionObject
operator
->*
(PMF pmf)
{
return
FunctionObject(
this
,pmf);
//
automaticlly invoke operator()
}
}
;
int
main()
{
Dog w;
Dog::PMF pmf
=
&
Dog::run;
(w
->*
pmf)(
1
);
pmf
=
&
Dog::eat;
(w
->*
pmf)(
2
);
return
0
;
}
operator->*返回一個(gè)FunctionObject對(duì)象,其中有對(duì)象*this,也有指向成員的指針pmem。
賦值運(yùn)算符
從有到有。
MyType b;
MyType a
=
b;
//
a沒(méi)出現(xiàn)過(guò),調(diào)用拷貝構(gòu)造函數(shù)
a
=
b;
//
a已經(jīng)出現(xiàn),調(diào)用operator=()
因?yàn)槭菑囊粋€(gè)對(duì)象賦值至已有的對(duì)象,以為著這個(gè)對(duì)象不再使用,所以要進(jìn)行一些處理。并且應(yīng)該判斷是否賦值給自己。
引用計(jì)數(shù)的引入:所有的指針都指向一塊內(nèi)存,所以,增加一塊引用就應(yīng)該增加一次計(jì)數(shù)。當(dāng)計(jì)數(shù)為0時(shí),表示沒(méi)有指針指向它,可以delete掉。
但是,如果修改了這塊內(nèi)存,意味著所有指向它的引用都被修改了,所以出現(xiàn)了寫(xiě)拷貝。判斷引用計(jì)數(shù)是否為1,為1的話(huà)說(shuō)明沒(méi)有其他指針指向它,可以修改。如果大于1,說(shuō)明有很多指針指向它,那就重新開(kāi)辟一塊內(nèi)存,將那塊內(nèi)存的內(nèi)容復(fù)制過(guò)來(lái),再進(jìn)行修改,同時(shí),指向最初內(nèi)存的引用計(jì)數(shù)應(yīng)該減1.
自動(dòng)類(lèi)型轉(zhuǎn)換
轉(zhuǎn)型構(gòu)造函數(shù):必須只有一個(gè)參數(shù),隱式轉(zhuǎn)換。如果想顯式轉(zhuǎn)換,使用explicit定義拷貝構(gòu)造函數(shù)。
運(yùn)算符轉(zhuǎn)換:
class
Three
{
int
i;
public
:
Three(
int
ii
=
0
,
int
=
0
):i(ii)
{}
}
;
class
Four
{
int
x;
public
:
Four(
int
xx):x(xx)
{}
operator
Three()
const
{
return
Three(x);}
}
;
void
g(Three)
{}
int
main()
{
Four four(
1
);
g(four);
g(
1
);
}
1
posted on 2012-06-01 16:48
Dino-Tech
閱讀(271)
評(píng)論(0)
編輯
收藏
引用
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Copyright ©2025 Dino-Tech Powered by:
博客園
模板提供:
滬江博客
婷婷久久综合九色综合绿巨人
|
久久婷婷久久一区二区三区
|
国内精品久久久久影院一蜜桃
|
久久精品国产亚洲av高清漫画
|
国产巨作麻豆欧美亚洲综合久久
|
久久精品国产亚洲一区二区三区
|
2021久久精品免费观看
|
久久综合九色综合网站
|
精品欧美一区二区三区久久久
|
亚洲精品高清国产一线久久
|
久久99精品久久久久久不卡
|
久久国产精品无
|
7国产欧美日韩综合天堂中文久久久久
|
久久中文字幕人妻丝袜
|
精品综合久久久久久97超人
|
亚洲精品乱码久久久久久蜜桃不卡
|
国产麻豆精品久久一二三
|
无码人妻久久一区二区三区蜜桃
|
久久精品国产亚洲av麻豆小说
|
精品精品国产自在久久高清
|
一本久道久久综合狠狠躁AV
|
国产精品免费久久
|
久久久久亚洲av成人网人人软件
|
久久综合色区
|
久久中文字幕精品
|
久久精品国产一区二区电影
|
伊人久久综在合线亚洲2019
|
精品永久久福利一区二区
|
久久婷婷色综合一区二区
|
久久久噜噜噜久久
|
久久精品国产亚洲精品
|
久久精品亚洲精品国产欧美
|
国产精品成人99久久久久91gav
|
成人免费网站久久久
|
久久综合九色综合久99
|
精品久久久久久成人AV
|
色偷偷久久一区二区三区
|
久久这里只有精品18
|
久久精品中文无码资源站
|
无码国内精品久久人妻蜜桃
|
久久久久亚洲av无码专区
|