CPP
cpp
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
#include <iostream>
using namespace std;
template<class T>
class sharedptr
{
public:
sharedptr(T* ptr = nullptr) : res(ptr), count(new int(1))
{
}
~sharedptr()
{
decrementCounter();
}
sharedptr(const sharedptr<T>& other)
{
res = other.res;
count = other.count;
incrementCounter();
}
template<class U>
sharedptr(const sharedptr<U>& other)
{
res = other.get();
count = other.getCounter();
incrementCounter();
}
sharedptr(sharedptr<T>&& other) noexcept
Enter to Rename, Shift+Enter to Preview
OUTPUT
Run