auto_ptr在函数参数和返回值的运用
来源:互联网 发布:淘宝头发增长液可信吗 编辑:程序博客网 时间:2024/05/21 10:13
auto_ptr在函数参数和返回值的运用
黄国强 2009-7-28
先看4个函数定义:
1) CSample * Func(CSample2 * p);
2) CSample * Func(std:auto_ptr<CSample2> p);
3) std:auto_ptr<CSample> Func(CSample2 * p);
4) std:auto_ptr<CSample> Func(std:auto_ptr<CSample2> p);
我在这里举出的这四个函数是想表明,如果不用auto_ptr而只用第一种形式。会带来一个问题。
即,如果不阅读文档,第一种形式函数的调用者将无法搞清楚是否需要释放参数指针和返回值的指针。可能有人说,那就看文档好了。我觉得最好的代码应该是自释义的,故引入了后三种形式。
下面分别作个说明
1) CSample * Func(CSample2 * p);
这种形式,参数指针和返回值指针都无需释放。
2) CSample * Func(std:auto_ptr<CSample2> p);
这种形式,返回值指针无需释放,参数指针自动释放,如果内部不需要参数自动释放,可以调用p.release()。
3) std:auto_ptr<CSample> Func(CSample2 * p);
这种形式,参数指针指针无需释放,返回值指针自动释放,如果调用者不需返回值自动释放,应该调用release()。
4) std:auto_ptr<CSample> Func(std:auto_ptr<CSample2> p);
这种形式,参数指针和返回值指针二者都自动释放。
- auto_ptr在函数参数和返回值的运用
- shell 函数的参数和返回值
- Bash函数的参数和返回值
- 函数参数和返回值的传递
- main函数的参数和返回值
- 函数参数的传递和值返回
- 函数的参数和返回值的传递方式
- 8、函数的参数问题、参数传值、return返回值、可变函数和匿名函数
- C++ 多维数组作为函数的返回值和参数
- 数组作函数的参数和返回值
- 查看dll文件中的函数的参数和返回值
- C++ - 函数的参数传递方式和返回值
- 结构体变量作为函数的参数和返回值
- 如果函数的传入参数和返回值是对象
- 结构体变量作为函数的参数和返回值 .
- c++函数参数和返回值的规则
- 数组作函数的参数 和 返回值return
- main函数的参数和返回值----2014.03.11
- oracle的各个后台进程
- 数据库左连接用法
- JavaScript设计模式学习——Factory
- prim最小生成树算法要点
- 一个排列组合的问题
- auto_ptr在函数参数和返回值的运用
- 序列化(Serialization)库教程
- mysql 创建用户方法
- 基础
- phpcms2008 代码简介:目录结构
- 存储过程语法(MySQL)
- 防止对话框程序按Enter和ESC退出的对策
- ubuntu 8.04 下安装 OpenOffice 3(使用 launchpad 源)
- ecos线程