Skip to content

1293: shared_ptr

题目

题目描述

本题中,你提交的代码将被作为名为"src.hpp"的头文件而被提交,评测主程序将会include该头文件并检验该头文件的正确性。

c++11 迎来的一个重大的更新之一就是智能指针的出现。它可以不用使我们费心于内存资源的管理与释放。你可以阅读 C++ Primer中文版(第五版) 第十二章,或其它资料,以了解详情。

目的

试着完成如下的 shared_ptr 相关的内容,并且你只需完成 int 版本

(下面的 p 都为 shared_ptr )

  • shared_ptr p; 构造

  • *p 解引用

  • shared_ptr p(q) ,构造,q 为 shared_ptr

  • shared_ptr p(q) ,构造,q 为内置指针

  • p = q , 赋值,q为shared_ptr

  • p.reset()

  • p.reset(q), q 为内置指针

当然,不能使用 c++ 自带的 shared_ptr 喽!

还有,当心 const !

样例测试程序

```cpp

include "src.hpp"

include

include

using namespace std;

int main() { const shared_ptr p(new int(-1)); cout << p << endl; shared_ptr pp(p); cout << pp << endl; pp = 6; cout << pp << endl; cout << *p << endl; pp.reset();

shared_ptr p2;
p2.reset( new int(4));
*p2 = 5;
cout << *p2 << endl;
p2.reset();

shared_ptr p3(new int(1));
int *x = new int(4);
shared_ptr p4(x);

int *y = new int(4);
shared_ptr p5(y);
shared_ptr p6(p5);
shared_ptr p7(shared_ptr(shared_ptr(new int(1))));
shared_ptr p8(new int(4));
p8 = p8;
p8 = p7;
p8 = p6;
p8 = p5;


int *z = new int(4);
shared_ptr p9(z);
p9 = p9;
auto p10 = p9;
p9 = p10;

int *a = new int(4);
shared_ptr p11(a);
shared_ptr p12(p11);
*p11 += 1;
cout << *p12 << endl;
p12.reset(new int(5));
*p12 += 2;
cout << *p12 << endl;

}

ifdef _GLIBCXX_MEMORY

EXPLODE!

endif

```

输入格式

输出格式

样例输入

样例输出

``` -1 -1 6 6 5 5 7

```

数据范围

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!