C++ 构造函数与析构函数

#include <iostream>

using namespace std;

const int sz = 20;

class Pointer;

class Holder
{
private:
	int a[sz];
public:
	Holder();
	~Holder();

	friend class Pointer;
};

Holder::~Holder()
{
	
}

class Pointer
{
private:
	Holder* h;
	int* p;
public:
	Pointer(Holder *hh);
	
	void next();  // 指针指向下一个,
	void previous();  // 指针的前一个
	void top();  // 第一个将指针移动到第一个,
	void end();  // 最后一个,
	void set(int i);  // 修改指针所指向的数,
	int read();  // 把指针所指向的数取出来,
	~Pointer();
};

Pointer::~Pointer()
{
	
}

Holder::Holder()
{
	memset(a, 0, sz*sizeof(int));
}

Pointer::Pointer(Holder* rv)
{
	h = rv;
	p = rv->a;
}

void Pointer::next()
{
	if (p < &h->a[sz - 1]) p++;
}

void Pointer::previous()
{
	if (p > &(h->a[0])) p--;
}

void Pointer::top()
{
	p = &(h->a[0]);
}

void Pointer::end()
{
	p = &(h->a[sz - 1]);
}

int Pointer::read()
{
	return *p;
}

void Pointer::set(int i)
{
	*p = i;
}


int main()
{
	Holder h;
	Pointer hp(&h),hp2(&h);


	for (int i = 0; i < sz; i++)
	{
		hp.set(i);
		hp.next();
	}

	hp.top();
	hp2.end();
	for (int i = 0; i < sz; i++)
	{
		cout << "hp = "<< hp.read() 
			<<" , hp2 = "<< hp2.read() 
			<< endl;
		hp.next();
		hp2.previous();
	}


	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值