大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
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
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
auto_ptr
智能指针是其指向对象的拥有者,当智能指针被销毁时,对象也被销毁。
一个对象只可能被一个智能指针拥有。
auto_ptr对对象的拥有权
//
pass by value
void
TestParaValue(auto_ptr
<
int
>
p)
{
cout
<<
boolalpha
<<
(NULL
==
p.
get
())
<<
endl;
cout
<<*
p
<<
endl;
}
//
pass by reference
void
TestParaRef(
const
auto_ptr
<
int
>&
p)
{
cout
<<
boolalpha
<<
(NULL
==
p.
get
())
<<
endl;
cout
<<*
p
<<
endl;
}
//
return value
auto_ptr
<
int
>
TestRet()
{
auto_ptr
<
int
>
pa(
new
int
(
5
));
return
pa;
}
int
main()
{
{
auto_ptr
<
int
>
pa(
new
int
(
4
));
//
auto_ptr初始化,pa拥有对象
cout
<<*
pa
<<
endl;
auto_ptr
<
int
>
pb(pa);
//
auto_ptr初始化,pa将拥有权转交给pb
cout
<<
boolalpha
<<
(NULL
==
pa.
get
())
<<
endl;
//
pa里内容为null
cout
<<*
pb
<<
endl;
//
pb拥有对象
auto_ptr
<
int
>
pc
=
TestRet();
//
返回值形式的函数调用,函数内部创建的对象所有权交给pc
cout
<<*
pc
<<
endl;
//
pc拥有对象
TestParaValue(pb);
//
传值方式函数调用,pb将拥有权转交给形参,函数返回时形参销毁,对象销毁
cout
<<
boolalpha
<<
(NULL
==
pb.
get
())
<<
endl;
//
pb里内容为null
TestParaRef(pc);
//
传引用方式函数调用
cout
<<
boolalpha
<<
(NULL
==
pc.
get
())
<<
endl;
//
pc没有转交拥有权
auto_ptr
<
int
>
pe;
//
pe内为null
//
*pe = 44;
//
error,向空指针指向的地址赋值
const
auto_ptr
<
int
>
pf(
new
int
(
4
));
//
const auto_ptr
//
pf = pc;
//
error, const的auto_ptr所有权不能改变
*
pf
=
8
;
//
ok, const的auto_ptr的内容可以改变
}
getchar();
return
0
;
}
auto_ptr的操作
int
main()
{
{
auto_ptr
<
int
>
pa(
new
int
(
4
));
cout
<<*
pa
<<
endl;
//
*操作符返回auto_ptr拥有的对象
cout
<<
boolalpha
<<
(NULL
==
pa.
get
())
<<
endl;
//
get()返回对象地址
auto_ptr
<
int
>
pb(pa.release());
//
release()放弃对象拥有权,返回对象地址
cout
<<
boolalpha
<<
(NULL
==
pa.
get
())
<<
endl;
cout
<<*
pb
<<
endl;
pb.reset(
new
int
(
6
));
//
重新设置auto_ptr的内容,删除之前的内容
cout
<<*
pb
<<
endl;
}
getchar();
return
0
;
}
posted on 2009-06-19 14:50
大胖
阅读(257)
评论(0)
编辑
收藏
引用
所属分类:
STL
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
泛型算法
STL六大组件
迭代器
函数对象
auto_ptr
容器-set和map
容器-list
容器-deque
容器-vector
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖