c++實例研究
從0開始
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
104 隨筆 :: 0 文章 :: 20 評論 :: 0 Trackbacks
<
2010年5月
>
日
一
二
三
四
五
六
25
26
27
28
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
公告
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
c++面試題(8)
(rss)
c++實例(45)
(rss)
django
(rss)
POJ(3)
(rss)
Unix 命令(8)
(rss)
web開發(19)
(rss)
工程問題集(10)
(rss)
雜談(2)
(rss)
隨筆檔案
2012年2月 (1)
2011年6月 (1)
2011年3月 (1)
2010年11月 (6)
2010年10月 (28)
2010年9月 (2)
2010年7月 (5)
2010年6月 (24)
2010年5月 (31)
2010年4月 (5)
參考
besterChen
Make手冊
高性能編程參考站
我的幾個分站
CSDN站
GoogleAppEngine站
JavaEye站
北郵人站
豆瓣站
新浪站
搜索
最新評論
1.?re: 手機九點密碼鎖的可能性有多少種?
請說出你所想到的幾種可能
--煩惱的鴨子
2.?re: 手機九點密碼鎖的可能性有多少種?
我的手機密碼忘記了,各位幫幫忙
--煩惱的鴨子
3.?re: 枚舉類型和整形的轉換和比較
ww
--sss
4.?re: POJ 1062 拓撲排序
評論內容較長,點擊標題查看
--npbool
5.?re: POJ 1062 拓撲排序
這不是杭電上的題吧。
--Ancowei
閱讀排行榜
1.?[zz]linux sleep用法(7459)
2.?svn 提交時 文件夾 missing 問題的解決(7357)
3.?gdb調試g++ -g生成文件,list后不能看到源代碼(4822)
4.?gdb用十六進制打印變量值(3851)
5.?枚舉類型和整形的轉換和比較(2701)
評論排行榜
1.?POJ 1062 拓撲排序(4)
2.?手機九點密碼鎖的可能性有多少種?(2)
3.?函數指針的取地址和解引用(2)
4.?很有挑戰性的題目(不斷更新)(2)
5.?運算符||的結合律是從左往右還是從右往左(2)
保持const member function,實現修改成員變量的3種方法
#include
<
iostream
>
#include
<
cstdlib
>
using
namespace
std;
class
Foo
{
public
:
Foo(
int
n):val(n),changed(
false
)
{}
int
getVal()
const
{
Foo
*
fp
=
const_cast
<
Foo
*>
(
this
);
fp
->
changed
=
true
;
//
changed=true;
//
error: in read-only structure
return
val;
}
;
bool
isVisit()
const
{
return
changed;}
private
:
int
val;
bool
changed;
}
;
int
main()
{
Foo f(
10
);
cout
<<
f.isVisit()
<<
endl;
cout
<<
f.getVal()
<<
endl;
cout
<<
f.isVisit()
<<
endl;
system(
"
PAUSE
"
);
return
0
;
}
一種更好的方法是使用mutable關鍵字,表示即使在const情況下,仍然能被修改
#include
<
iostream
>
#include
<
cstdlib
>
using
namespace
std;
class
Foo
{
public
:
Foo(
int
n):val(n),changed(
false
)
{}
int
getVal()
const
{
changed
=
true
;
//OK
return
val;
}
;
bool
isVisit()
const
{
return
changed;}
private
:
int
val;
mutable
bool
changed;
}
;
int
main()
{
Foo f(
10
);
cout
<<
f.isVisit()
<<
endl;
cout
<<
f.getVal()
<<
endl;
cout
<<
f.isVisit()
<<
endl;
system(
"
PAUSE
"
);
return
0
;
}
如果一個類中有很多需要被修改,可以單獨作為一個成員類
#include
<
iostream
>
#include
<
cstdlib
>
using
namespace
std;
class
Bar
{
public
:
Bar():changed(
false
),val_count(
0
)
{}
bool
changed;
int
val_count;
}
;
class
Foo
{
public
:
Foo(
int
n):val(n),b(
new
Bar())
{}
int
getVal()
const
{
b
->
changed
=
true
;
//
ok
b
->
val_count
++
;
return
val;
}
;
bool
isVisit()
const
{
return
b
->
changed;}
int
getValCount()
const
{
return
b
->
val_count;}
private
:
int
val;
Bar
*
b;
}
;
int
main()
{
Foo f(
10
);
cout
<<
f.isVisit()
<<
endl;
cout
<<
f.getValCount()
<<
endl;
cout
<<
f.getVal()
<<
endl;
cout
<<
f.isVisit()
<<
endl;
cout
<<
f.getValCount()
<<
endl;
cout
<<
f.getVal()
<<
endl;
cout
<<
f.isVisit()
<<
endl;
cout
<<
f.getValCount()
<<
endl;
system(
"
PAUSE
"
);
return
0
;
}
特別注意上例中,指針b的初始化的寫法,其實,在構造函數冒號后的member(val)相當于member=val
posted on 2010-05-01 11:10
elprup
閱讀(387)
評論(0)
編輯
收藏
引用
所屬分類:
c++實例
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
成員變量的地址
struct對齊一題
類僅有復制構造函數時,將覆蓋默認構造函數和復制構造函數
c++異常:多個catch只走一個分支
正負對模運算的影響
運算符重載回憶代碼
自定義析構函數和delete &object不能共存
copy構造函數可以訪問同類型參數的私有成員,卻不能訪問非同類的參數的私有成員
隱式的copy構造函數
c++沉思錄 代碼集 2
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © elprup
亚洲国产精品成人AV无码久久综合影院
|
理论片午午伦夜理片久久
|
99蜜桃臀久久久欧美精品网站
|
亚洲国产精品成人久久蜜臀
|
97精品依人久久久大香线蕉97
|
青青青青久久精品国产h久久精品五福影院1421
|
久久99精品国产
|
韩国三级中文字幕hd久久精品
|
亚洲精品视频久久久
|
国产综合久久久久
|
亚洲精品视频久久久
|
国产精品久久一区二区三区
|
久久久国产99久久国产一
|
久久久久亚洲精品天堂
|
精品久久久久久久中文字幕
|
精品国产乱码久久久久久人妻
|
国产精品久久久久影视不卡
|
亚洲欧洲久久久精品
|
久久99国产精品99久久
|
国产精品亚洲综合久久
|
久久996热精品xxxx
|
久久精品国产亚洲综合色
|
伊人久久大香线蕉综合影院首页
|
国产激情久久久久影院老熟女免费
|
天天躁日日躁狠狠久久
|
久久免费看黄a级毛片
|
久久久无码精品午夜
|
伊人久久综在合线亚洲2019
|
久久中文字幕视频、最近更新
|
国产Av激情久久无码天堂
|
欧美va久久久噜噜噜久久
|
久久综合亚洲色一区二区三区
|
久久婷婷国产剧情内射白浆
|
国产精品免费久久久久久久久
|
久久国产精品成人片免费
|
亚洲AV乱码久久精品蜜桃
|
久久国产色av免费看
|
亚洲AV无码久久精品蜜桃
|
综合人妻久久一区二区精品
|
精品人妻伦九区久久AAA片69
|
国内精品久久久久影院亚洲
|