Everything start here.
Windows8 Tech
C++博客
首頁
新隨筆
聯系
聚合
管理
隨筆 - 55 文章 - 15 trackbacks - 0
<
2012年3月
>
日
一
二
三
四
五
六
26
27
28
29
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
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
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)
搜索
最新評論
1.?re: Window 8 學習筆記(三)-- 如何創建一個可變尺寸的GridView
樓主能提供完整的源碼么,想系統學習下,謝謝啦,
--墮落1990
2.?re: Windows 8 學習筆記(四)--創建Variable Sized GridView之PrepareContainerForItemOverride方法
@Dino-Tech
@Dino-Tech
OK,期待你加我的QQ.
--英明神武可愛
3.?re: Windows 8 學習筆記(四)--創建Variable Sized GridView之PrepareContainerForItemOverride方法
評論內容較長,點擊標題查看
--Dino-Tech
4.?re: Windows 8 學習筆記(四)--創建Variable Sized GridView之PrepareContainerForItemOverride方法
評論內容較長,點擊標題查看
--英明神武可愛
5.?re: Windows 8 學習筆記(四)--創建Variable Sized GridView之PrepareContainerForItemOverride方法
你可以加我的qq嗎,我按你的方法繼承了gridview,但是編譯不過。
--英明神武可愛
閱讀排行榜
1.?Dino Windows 8 學習筆記(十四)--BackgroundTask 15問(3496)
2.?Dino Windows 8 學習筆記(十)-- 一個異常引發的文章之Resource Dictionary(3219)
3.?Dino Windows 8 學習筆記(十三)-- Toast(2865)
4.?Window 8 學習筆記(二)--如何創建自定義類型的MessageDialog(2505)
5.?Windows 8 學習筆記(四)--創建Variable Sized GridView之PrepareContainerForItemOverride方法(2185)
評論排行榜
1.?Windows 8 學習筆記(四)--創建Variable Sized GridView之PrepareContainerForItemOverride方法(7)
2.?Thinking in C++--第三章 平時不太注意的編程細節(3)
3.?Windows 8 基本概念(1)
4.?Window 8 學習筆記(三)-- 如何創建一個可變尺寸的GridView (1)
5.?Dino Windows 8 學習筆記(十二) - 動態瓷貼(1)
Thinking in C++ -- 第十二章 運算符重載
運算符重載的目的:使操作更明確,更方便
可以是成員函數,也可以是全局函數。成員函數的好處是:返回值可以調用函數。全局函數的好處是:運算符兩邊的對象都可以進行隱式類型轉化。但是,如果定義了一個全局的運算符,將有機會覆蓋掉標準的運算。
不能重載的運算符:
1. 成員選擇operator.()。如果允許重載,就不能用普通的方法訪問成員,只能用operator->()訪問。
2. 成員指針間接引用operator.*()。
3. 不存在的用戶自定義的運算符。
ps:不能改變優先級,也不能改變運算符的參數。否則很難記憶。
幾個比較重要的運算符:
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);
}
//
返回值優化,構造一個對象并交給返回值。
operator->靈巧指針,是一個類看起來像指針 :必須返回一個對象(或對象的引用),該對 象也有一個指針間接引用運算符;或者必須返回一個指針。
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();
一般將智能指針嵌入它所服務的類中。
operator->*(),二元運算符,必須有一個operator(),且必須是成員函數。operator()允許里面有任意參數,使得對象看起來像一個真正的函數。
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->*返回一個FunctionObject對象,其中有對象*this,也有指向成員的指針pmem。
賦值運算符
從有到有。
MyType b;
MyType a
=
b;
//
a沒出現過,調用拷貝構造函數
a
=
b;
//
a已經出現,調用operator=()
因為是從一個對象賦值至已有的對象,以為著這個對象不再使用,所以要進行一些處理。并且應該判斷是否賦值給自己。
引用計數的引入:所有的指針都指向一塊內存,所以,增加一塊引用就應該增加一次計數。當計數為0時,表示沒有指針指向它,可以delete掉。
但是,如果修改了這塊內存,意味著所有指向它的引用都被修改了,所以出現了寫拷貝。判斷引用計數是否為1,為1的話說明沒有其他指針指向它,可以修改。如果大于1,說明有很多指針指向它,那就重新開辟一塊內存,將那塊內存的內容復制過來,再進行修改,同時,指向最初內存的引用計數應該減1.
自動類型轉換
轉型構造函數:必須只有一個參數,隱式轉換。如果想顯式轉換,使用explicit定義拷貝構造函數。
運算符轉換:
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
閱讀(274)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 Dino-Tech Powered by:
博客園
模板提供:
滬江博客
青青草原综合久久大伊人
|
久久精品蜜芽亚洲国产AV
|
国产精品99久久精品爆乳
|
91精品无码久久久久久五月天
|
97久久精品人人做人人爽
|
久久久精品久久久久影院
|
色偷偷偷久久伊人大杳蕉
|
91精品国产高清久久久久久91
|
国产激情久久久久影院小草
|
久久99精品国产麻豆宅宅
|
久久国产免费观看精品
|
欧美日韩久久中文字幕
|
国产三级观看久久
|
久久久久四虎国产精品
|
亚洲国产精品无码久久久秋霞2
|
国内精品久久久久影院免费
|
国产亚洲精午夜久久久久久
|
久久99精品国产麻豆宅宅
|
国产亚洲色婷婷久久99精品
|
漂亮人妻被中出中文字幕久久
|
久久无码人妻精品一区二区三区
|
久久久久亚洲AV无码网站
|
精品少妇人妻av无码久久
|
国内精品伊人久久久久
|
国产午夜精品久久久久九九电影
|
国产香蕉97碰碰久久人人
|
亚洲欧洲久久久精品
|
99久久国产宗和精品1上映
|
天天躁日日躁狠狠久久
|
久久亚洲欧美国产精品
|
国产成人精品久久一区二区三区av
|
九九久久99综合一区二区
|
久久国产精品偷99
|
久久综合亚洲欧美成人
|
国产成人综合久久精品尤物
|
少妇无套内谢久久久久
|
亚洲综合久久综合激情久久
|
亚洲αv久久久噜噜噜噜噜
|
久久国产三级无码一区二区
|
国产亚洲综合久久系列
|
伊人久久大香线蕉亚洲
|