#pragma once
template <typename T>
class SharePtr{
private:
int *_n;
T *_ptr;
public:
SharePtr(const SharePtr & t) {
// Todo
}
SharePtr(T * t) : _ptr(t){
// Todo
}
SharePtr<T>&operator=(const SharePtr& t){
// Todo
}
T& operator*() {
// Todo
}
T*operator->(){
// Todo
}
~SharePtr(){
// Todo
}
};
以下两段代码来自第三次作业 Vector类的简易实现与封装 改变而成
node.h
#pragma once
#include <iostream>
void test();
class Node{
private:
static long long int num_createfunc_default, num_createfunc, num_copyfunc, num_movefunc, num_copyassign, num_moveassign, num_delfunc;
int val;
public:
Node(int v);
Node();
~Node();
Node(const Node &y);
Node(Node &&y);
Node& operator=(const Node &y);
Node& operator=(Node &&y);
bool operator!=(const Node &y);
friend std::istream& operator>>(std::istream& in, Node& x);
friend std::ostream& operator<<(std::ostream& out, const Node& x);
static void outputResult();
friend void test();
};
题目描述
很多同学会在申请内存之后忘了释放,为了解决这个问题,C++ 11中实现了一些智能指针类
auto_ptr, shared_ptr, unique_ptr
可以通过#include \来使用
详细解析可以见 https://blog.csdn.net/zy19940906/article/details/50470087
这次作业希望同学们自己实现一个简单的智能指针,要求能够实现自动析构一段没有被指向的内存
部分代码
main.cpp
shareptr.h
以下两段代码来自第三次作业 Vector类的简易实现与封装 改变而成
node.h
node.cpp
考察知识点
模板类、智能指针