PointVector

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

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_;
		capacity_ = pv.capacity_;
		data = new Point[pv.capacity_];
		for (unsigned i = 0; i < capacity_; i++) {
			data[i] = pv.data[i];
		}
		return *this;
	}
	PointVector& operator+(const PointVector
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值