力為的技術博客
聯系
聚合
管理
154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
公告
@上海浦東
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(58)
給我留言
查看公開留言
查看私人留言
隨筆分類
(154)
2. Graphics(10)
3. VC&MFC&Qt(35)
4. C++ FAQ(35)
5. GP&STL&BOOST(10)
6. COM&ATL&WTL(5)
7. OGRE Analysis(14)
8. ACIS/HOOPS(4)
9.OpenCASCADE(13)
Mac&iOS(5)
Mac&iOS(1)
Tools(22)
積分與排名
積分 - 709288
排名 - 22
最新評論
1.?re: 2015武漢校園招聘歸來
@eryar
時間安排的太緊,就沒有驚擾你啦。
--力為
2.?re: 2015武漢校園招聘歸來
評論內容較長,點擊標題查看
--sunyuanbo
3.?re: 2015武漢校園招聘歸來
謝謝 您的筆記讓我受益匪淺
--仝錫林
4.?re: 2015武漢校園招聘歸來
不知道來武漢了啊!
--eryar
5.?re: 2015武漢校園招聘歸來
@力為
謝謝提醒,還在學習中。。。
--編程小學徒
6.?re: 2015武漢校園招聘歸來
評論內容較長,點擊標題查看
--編程小學徒
7.?re: 2015武漢校園招聘歸來[未登錄]
評論內容較長,點擊標題查看
--chipset
8.?re: 2015武漢校園招聘歸來
@編程小學徒
考研也不僅僅靠有編程興趣就夠了,還有其他的課程。好好準備吧,祝考試順利。
--力為
9.?re: 2015武漢校園招聘歸來
評論內容較長,點擊標題查看
--編程小學徒
10.?re: 2015武漢校園招聘歸來[未登錄]
為了混口飯吃,大家都不容易啊,原諒刷題的同學吧。話說學校里能教啥呀,都靠自己用心,有上進心才是最重要的,否則筆試面試再好也是白扯。從面試官的角度看考試沒有錯,換成我會找有潛力的或者上進心強的。
--chipset
11.?re: 【代碼】使用Teigha讀取DWG
要用vs2010編譯么?
--jj
12.?re: 臨時對象引用[未登錄]
最后一個例子也是零時變量?
--zhonghuajia
13.?re: 為什么需要給函數返回類型加const
評論內容較長,點擊標題查看
--冬瓜
14.?re: 【代碼】使用Teigha讀取DWG
歡迎加入QQ群122751318,討論Teigha
--Teigha開發
15.?re: CMake + Qt5.1.0
@MIKE
還是不行。
不管是prefix還是library還是include,都嘗試過了,不行,網上的方法都不行……
--Delbert
評論排行榜
1.?Pro OGRE 3D Programming 電子版(54)
2.?手機號碼黑名單(53)
3.?屏幕截圖工具V1[附源碼](22)
4.?波形顯示不是很難(15)
5.?五個小矮人分桃子-一道小學生的作業題目(15)
6.?用CImage加載內存里的Image(14)
7.?用istringstream 解決問題一則(14)
8.?OGRE動畫練習(13)
9.?VC+ADO操作數據庫注意事項(1)(13)
10.?fstream 和 中文路徑(13)
11.?OGRE粒子系統之在烈火中永生(11)
12.?如何通過FILE*操作內存文件?(11)
13.?VC2008 Feature Pack的問題(11)
14.?升級到 VS2008 SP1 注意問題(11)
15.?失足于shared_ptr(11)
const auto_ptr保證擁有權不能轉移的實現原理?
const auto_ptr保證擁有權不能轉移的實現原理?
在《C++標準程序庫》p55,提到了auto_ptr使用了一個技巧,能夠copy和復制non-const auto_ptr,但不可以copy和復制const atuo_ptr。
可看了之后沒感覺,等待高手指點中.....
CSDN領分之處:
http://community.csdn.net/Expert/topic/4347/4347660.xml?temp=.3555872
VC7的
//
VC7中的
//
TEMPLATE CLASS auto_ptr
template
<
class
_Ty
>
class
auto_ptr;
template
<
class
_Ty
>
struct
auto_ptr_ref
{
//
proxy reference for auto_ptr copying
auto_ptr_ref(auto_ptr
<
_Ty
>&
_Right)
: _Ref(_Right)
{
//
construct from compatible auto_ptr
}
auto_ptr
<
_Ty
>&
_Ref;
//
reference to constructor argument
}
;
template
<
class
_Ty
>
class
auto_ptr
{
//
wrap an object pointer to ensure destruction
public
:
typedef _Ty element_type;
explicit
auto_ptr(_Ty
*
_Ptr
=
0
) _THROW0()
: _Myptr(_Ptr)
{
//
construct from object pointer
}
auto_ptr(auto_ptr
<
_Ty
>&
_Right) _THROW0()
: _Myptr(_Right.release())
{
//
construct by assuming pointer from _Right auto_ptr
}
auto_ptr(auto_ptr_ref
<
_Ty
>
_Right) _THROW0()
: _Myptr(_Right._Ref.release())
{
//
construct by assuming pointer from _Right auto_ptr_ref
}
template
<
class
_Other
>
operator
auto_ptr
<
_Other
>
() _THROW0()
{
//
convert to compatible auto_ptr
return
(auto_ptr
<
_Other
>
(
*
this
));
}
template
<
class
_Other
>
operator
auto_ptr_ref
<
_Other
>
() _THROW0()
{
//
convert to compatible auto_ptr_ref
return
(auto_ptr_ref
<
_Other
>
(
*
this
));
}
template
<
class
_Other
>
auto_ptr
<
_Ty
>&
operator
=
(auto_ptr
<
_Other
>&
_Right) _THROW0()
{
//
assign compatible _Right (assume pointer)
reset(_Right.release());
return
(
*
this
);
}
template
<
class
_Other
>
auto_ptr(auto_ptr
<
_Other
>&
_Right) _THROW0()
: _Myptr(_Right.release())
{
//
construct by assuming pointer from _Right
}
auto_ptr
<
_Ty
>&
operator
=
(auto_ptr
<
_Ty
>&
_Right) _THROW0()
{
//
assign compatible _Right (assume pointer)
reset(_Right.release());
return
(
*
this
);
}
auto_ptr
<
_Ty
>&
operator
=
(auto_ptr_ref
<
_Ty
>&
_Right) _THROW0()
{
//
assign compatible _Right._Ref (assume pointer)
reset(_Right._Ref.release());
return
(
*
this
);
}
~
auto_ptr()
{
//
destroy the object
delete _Myptr;
}
_Ty
&
operator
*
()
const
_THROW0()
{
//
return designated value
return
(
*
_Myptr);
}
_Ty
*
operator
->
()
const
_THROW0()
{
//
return pointer to class object
return
(
&**
this
);
}
_Ty
*
get
()
const
_THROW0()
{
//
return wrapped pointer
return
(_Myptr);
}
_Ty
*
release() _THROW0()
{
//
return wrapped pointer and give up ownership
_Ty
*
_Tmp
=
_Myptr;
_Myptr
=
0
;
return
(_Tmp);
}
void
reset(_Ty
*
_Ptr
=
0
)
{
//
destroy designated object and store new pointer
if
(_Ptr
!=
_Myptr)
delete _Myptr;
_Myptr
=
_Ptr;
}
private
:
_Ty
*
_Myptr;
//
the wrapped object pointer
}
;
posted on 2005-10-24 22:07
力為
閱讀(1127)
評論(3)
編輯
收藏
引用
所屬分類:
5. GP&STL&BOOST
評論
#
re: const auto_ptr保證擁有權不能轉移的實現原理? 2005-10-24 23:32
ilovevc
要不看看我寫的
http://blog.csdn.net/ilovevc/archive/2005/09/09/475896.aspx
回復
更多評論
#
re: const auto_ptr保證擁有權不能轉移的實現原理? 2005-10-25 09:22
ly4cn
const auto_ptr
對于const實體來說,只有類的構造函數、析構函數和聲明后帶有const的函數允許調用。
因此,對于const auto_ptr<>來說,它允許調用成員函數只有:get,operator*,operator->。
明顯的,這幾個函數不能轉移所有權。
而用于轉移所有權的release,reset等等函數均不能調用。如果調用了,將產生編譯期錯誤。
回復
更多評論
#
re: const auto_ptr保證擁有權不能轉移的實現原理?
2005-10-26 10:08
力為
多謝各位的提供的資料:)
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Buffer和std::stream
[Ideas] Generic Serialization Framework
我的原創技術隨筆大全(2000~2009)
Boost.Python與C++互操作的問題(更新)
boost::any 與 boost::variant 的區別
An Adapter Solution
fstream 和 中文路徑
用std::find查找文件流中的內容
const auto_ptr保證擁有權不能轉移的實現原理?
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 力為
久久99精品国产一区二区三区
|
奇米综合四色77777久久
|
国产激情久久久久影院老熟女
|
国产69精品久久久久99尤物
|
欧美日韩精品久久久免费观看
|
久久精品国产日本波多野结衣
|
国产婷婷成人久久Av免费高清
|
亚洲国产香蕉人人爽成AV片久久
|
色天使久久综合网天天
|
久久精品国产亚洲av麻豆色欲
|
久久久免费观成人影院
|
久久一区二区三区99
|
2022年国产精品久久久久
|
理论片午午伦夜理片久久
|
狠狠色丁香婷综合久久
|
奇米综合四色77777久久
|
亚洲人成网站999久久久综合
|
色综合久久天天综合
|
亚洲中文久久精品无码
|
久久天天躁夜夜躁狠狠躁2022
|
99久久国产综合精品成人影院
|
亚洲欧美日韩久久精品第一区
|
欧美久久久久久午夜精品
|
久久久久久狠狠丁香
|
久久国产亚洲精品麻豆
|
精品久久久久久国产潘金莲
|
久久人妻少妇嫩草AV蜜桃
|
久久天天躁狠狠躁夜夜2020
|
久久久久久免费视频
|
久久国产成人亚洲精品影院
|
狠狠色综合久久久久尤物
|
成人a毛片久久免费播放
|
午夜不卡888久久
|
99久久精品免费看国产
|
国产2021久久精品
|
久久久久久亚洲精品无码
|
日本高清无卡码一区二区久久
|
要久久爱在线免费观看
|
精品一二三区久久aaa片
|
午夜天堂精品久久久久
|
久久发布国产伦子伦精品
|