cpp大作业,模仿cpp stl里的vector,编写一个PointVector类存储,Point类的数据,参考c++reference里vector的描述完成。
先上代码:
#include<iostream>
using namespace std;
struct Point {
Point(int x = 0, int y = 0) :x(x), y(y) {}
void print() {
cout << "(" << x << "," << y << ")";
}
int x;
int y;
};
class PointVector {
private:
Point* data;
unsigned size_;
unsigned capacity_;
public:
static Point NULLPoint;//返回Point操作失败时返回的空Point
//creators
PointVector() :size_(0), capacity_(0) { data = new Point[capacity_]; }
PointVector(const PointVector& x):size_(x.size_),capacity_(x.capacity_){
data = new Point[x.capacity_];
for (unsigned i = 0; i < size_; i++) {
data[i] = x.data[i];
}
}
//destructor
~PointVector() {
delete[]data;
}
//重载运算符
PointVector& operator=(const PointVector& pv) {
delete[]data;
size_ = pv.size_;
ca

这篇博客介绍了作者在C++大作业中模仿STL vector实现了一个PointVector类,用于存储Point类的对象。文章重点讨论了构造函数、深度复制、内存管理和析构函数的重要性,强调了在处理指针时防止内存泄漏和正确使用new与delete[]的重要性。同时提到了C++编译器的默认构造、析构函数以及复制函数的行为,对于理解继承链上的构造函数功能有一定帮助。
最低0.47元/天 解锁文章
997

被折叠的 条评论
为什么被折叠?



