OpenJudge

1:实现sharedptr

总时间限制:
1000ms
内存限制:
65536kB
描述

程序填空输出指定结果

1)2,2
2)2
3)2
4)sp1 is null
5)3
before end main
3 destructor
end main
8 destructor
2 destructor

#include <iostream>

using namespace std;
//#define MySharedPtr shared_ptr

template <class T> 
struct MySharedPtr
{
// 在此处补充你的代码
};

struct A   {    
 	 int n;
	 A(int v = 0):n(v){ } 
	 ~A() { cout << n << " destructor" << endl; }
};
int main()
{
	MySharedPtr<A> sp1(new A(2)); 
	MySharedPtr<A> sp2(sp1);        
	cout << "1)" << sp1->n  << "," << sp2->n << endl; 
	MySharedPtr<A> sp3;
	A * p = sp1.get();  
	cout << "2)" << p->n << endl;
	sp3 = sp1; 
	cout << "3)" << (*sp3).n << endl;  
	sp1.reset();     
	if( !sp1 )
		cout << "4)sp1 is null" << endl; //会输出 
	A * q = new A(3);
	sp1.reset(q); // 
	cout << "5)" << sp1->n << endl;
	MySharedPtr<A> sp4(sp1); 
	MySharedPtr<A> sp5;
	sp5.reset(new A(8));
	sp1.reset();          
	cout << "before end main" <<endl;
	sp4.reset();          
	cout << "end main" << endl;
	return 0; //程序结束,会delete 掉A(2)
}
输入
输出
1)2,2
2)2
3)2
4)sp1 is null
5)3
before end main
3 destructor
end main
8 destructor
2 destructor
样例输入
样例输出
1)2,2
2)2
3)2
4)sp1 is null
5)3
before end main
3 destructor
end main
8 destructor
2 destructor
来源
Guo Wei
全局题号
13655
提交次数
29
尝试人数
16
通过人数
15